You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2022/03/31 13:42:51 UTC

[Bug 65987] New: Infinite Loading Issue

https://bz.apache.org/bugzilla/show_bug.cgi?id=65987

            Bug ID: 65987
           Summary: Infinite Loading Issue
           Product: Apache httpd-2
           Version: 2.4.48
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: All
          Assignee: bugs@httpd.apache.org
          Reporter: dstewart@vai.net
  Target Milestone: ---

I am hosting a third-party websocket application on an instance of Apache
Tomcat(9.0.52). HTTPD/Apache Web is used in order to load balance multiple
instances of it. It's been our process for a long time, and works fine under
Apache Web 2.4.46, but we have begun to experience problems upon upgrading to
2.4.48 and higher. 

Upon successfully logging in, we are receiving reports that occasionally that
loading part hangs. The Application halts the user's ability to do anything,
and displays that it is loading, but never finishes, and never appears to time
out. This only happens occasionally. Downgrading back to 2.4.46 completely
resolves the issue---it never happens again.

The Application is running on 2.4.48 using a Websocket Fallback rule, and
experiences other problems without that (it disconnects after a minute of
idling). The specific rule we need in place is
ProxyWebsocketFallbackToProxyHttp Off.

We haven't been able to spot anything in the logs pertaining to the issue,
either. As far as Apache and the Application are concerned, it appears
everything is going swimmingly. This problem occurs on all web browsers, and
nothing of note appears to come up in the network tab.


My balancer and proxy configurations are pasted below:

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/"
env=BALANCER_ROUTE_CHANGED <Proxy balancer://webclient>
    BalancerMember "http://localhost:8081/webclient" route=node1
    BalancerMember "http://localhost:8082/webclient" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy> <Proxy
balancer://s2kdocs>
    BalancerMember "http://localhost:8081/s2kdocs" route=node1
    BalancerMember "http://localhost:8082/s2kdocs" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy> <Proxy
balancer://downloads>
    BalancerMember "http://localhost:8081/downloads" route=node1
    BalancerMember "http://localhost:8082/downloads" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy> <Proxy
balancer://S2KService>
    BalancerMember "http://localhost:8081/S2KService" route=node1
    BalancerMember "http://localhost:8082/S2KService" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy> <Proxy
balancer://GetOutputFileR50>
    BalancerMember "http://localhost:8081/GetOutputFileR50" route=node1
    BalancerMember "http://localhost:8082/GetOutputFileR50" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy> <Proxy
balancer://GetOutputFileT50>
    BalancerMember "http://localhost:8081/GetOutputFileT50" route=node1
    BalancerMember "http://localhost:8082/GetOutputFileT50" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy> <Proxy
balancer://webclient_ws>
    BalancerMember "ws://localhost:9091/webclient_ws" route=node1
    BalancerMember "ws://localhost:9092/webclient_ws" route=node1

    ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy>

# web sockets
ProxyPass /webclient_ws balancer://webclient_ws/

# http
ProxyPass /s2kdocs balancer://s2kdocs/
ProxyPassReverse /s2kdocs balancer://s2kdocs/

ProxyPass /downloads balancer://downloads/ ProxyPassReverse /downloads
balancer://downloads/

ProxyPass /S2KService balancer://S2KService/ ProxyPassReverse /S2KService
balancer://S2KService/

ProxyPass /GetOutputFileR50 balancer://GetOutputFileR50/ ProxyPassReverse
/GetOutputFileR50 balancer://GetOutputFileR50/

ProxyPass /GetOutputFileT50 balancer://GetOutputFileT50/ ProxyPassReverse
/GetOutputFileT50 balancer://GetOutputFileT50/

ProxyPass /webclient balancer://webclient/ ProxyPassReverse /webclient
balancer://webclient/

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 65987] Infinite Loading Issue

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=65987

--- Comment #2 from Daniel <ds...@vai.net> ---
We've tried using the suggested parameters. Unfortunately, no change.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 65987] Infinite Loading Issue

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=65987

Daniel <ds...@vai.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|                            |All

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


[Bug 65987] Infinite Loading Issue

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=65987

--- Comment #1 from Ruediger Pluem <rp...@apache.org> ---
This is likely related to 2 things:

1. The websocket implementation of mod_proxy_http that is used by default
unless you set ProxyWebsocketFallbackToProxyHttp to off uses a timeout on idle
websockets. If the timeout is expired the websocket is closed. You can modify
this timeout either by ProxyTimeout or a worker specific timeout parameter.
2. There was a change in the implementation that by default sockets are only
half closed to the front end if the backend only half closes the connection,
meaning if the backend closes only the writing side of its socket httpd will
only close the writing side of its socket to the client as well. You can revert
to the previous behaviour of closing the complete socket in these cases by
setting the environment variable proxy-nohalfclose. Unfortunately this
environment variable is not documented yet. Hence your report is at least a
documentation bug.

The above only works with with version 2.4.53.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org