mod_h2: 1.0.0: connections start infinitely hanging during ongoing parallel POST uploading workflow

There seems to be a clear pattern that when on of our subcontractors starts doing an active image uploading session to WordPress media library, pretty soon after all new connections hang. Restarting apache helps immediately.

<IfDefine HTTP2>
LoadModule h2_module modules/mod_h2.so
Protocols h2 http/1.1
ProtocolsHonorOrder on
</IfDefine>
# event MPM
#
# MinSpareThreads: Minimum number of idle threads available to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# ThreadsPerChild: Number of threads created by each child process
<IfModule mpm_event_module>
    # http://mail-archives.apache.org/mod_mbox/httpd-users/201501.mbox/%3CCAHti5NFfMpWwd0LYchR1p4ZBvVSAPPQFVpmCg9ZZSLBQHWMviA@mail.gmail.com%3E
    # https://bz.apache.org/bugzilla/show_bug.cgi?id=53555#c14
    StartServers        1
    ServerLimit         5
    MinSpareThreads     25
    MaxSpareThreads     100
    ThreadsPerChild     200
    ThreadLimit         200
    MaxRequestWorkers   1000
    MaxConnectionsPerChild  100000
</IfModule>

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 24 (7 by maintainers)

Most upvoted comments

I’ve made a significant discovery wrt to my mod_proxy_fcgid setup. There’s not a particularly obvious comment-like note at https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html

# UDS does not currently support connection reuse

In my case, I had configured exactly UDS-only + <Proxy fcgi://www/ enablereuse=on></Proxy>

This caused php-fpm processes to pile up in stuck Finishing state. I learned about the pm.status_path live status screen setting today which helped a ton with figuring things out.

Tomorrow, a new mod_h2 testing period definitely begins (without enablereuse), because I cannot be sure if previously I wasn’t simply exhausting either Apache or PHP-FPM resources with the above misconfiguration. It’s unfortunate Apache had no warning to stop me from executing it.

https://groups.drupal.org/node/229898#comment-788938 also helped me get on the right track - people were debugging nginx + fastcgi_keep_conn on;