I getting a rendering hang if a process request takes more that 30 seconds 
to complete. I am not sure whether the hang is caused by Apache or 
mod_wsgi. I get no errors and nothing in any log file to indicate there is 
a problem.


I am moving an application from apache2.2/mod_python to 
apache2.4.6/mod_wsgi and everything runs just fine, except that my 
application occasionally takes more than 30 seconds to assemble all the 
data needed to process a request. When this happens the page never renders 
and I cannot find anything to debug... To simplify things for testing I've 
used a bare bones "hello world" python program (below) with a 
time.sleep(30) in it and that also fails to render the page, again a time 
delay of 29 seconds or less and everything works fine. The results are 
consistent on Chrome/FF/IE browsers. 


I am using:
    mod_wsgi 4.7.1
    python 2.7.5, and Django
    Oracle HTTP Server 12.2.1.3 which runs Apache 2.4.6  (see long listing 
below)
    Red Hat Enterprise Linux Server release 7.4 (Maipo)


Googling around I've found lots advice and I've tweaked both Apache and 
mod_wsgi settings but nothing seems to make a difference. The most 
promising setting I came across was "queue-timeout" but setting that didn't 
seem to make a difference:

--queue-timeout SECONDS
                        Maximum number of seconds allowed for a request to 
be
                        accepted by a worker process to be handled, taken 
from
                        the time when the Apache child process originally
                        accepted the request. Defaults to 30 seconds.


I am at a lost for how to fix this issue or even how to better debug it, 
any advice or suggestions would be very welcome.


---------------------------- more detail -----------------------------

I  get the same results whether I am in embedded or Daemon mod_wsgi mode.

-----------------------------my httpd.conf "tweaks" -------------

<Directory /scratch/ohs>
    Require all granted
</Directory>
LoadModule wsgi_module "${PRODUCT_HOME}/modules/mod_wsgi.so"
WSGIDaemonProcess localhost:7780 processes=2 threads=15 request-timeout=0 
socket-timeout=1000 queue-timeout=60
WSGIApplicationGroup %{GLOBAL}
WSGIProcessGroup localhost:7780
WSGIScriptAlias /test /scratch/ohs/test_app/test_thirty

--------------------------- my trivial application 
---------------------------

import time
def application(environ, start_response):
    status = '200 OK'
    output = 'Testing with a 30 second sleep.'
    time.sleep(30)

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

----------------------  some of my environment setup results from 
https://code.google.com/archive/p/modwsgi/wikis/CheckingYourInstallation.wiki#Sub_Interpreter_Being_Used

$ /usr/sbin/httpd -V
Server version: Apache/2.4.6 ()
Server built:   Aug  7 2019 04:35:38
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/run/httpd/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

$ /usr/sbin/httpd -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

$ /usr/sbin/httpd -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 allowmethods_module (shared)
 auth_basic_module (shared)
 auth_digest_module (shared)
 authn_anon_module (shared)
 authn_core_module (shared)
 authn_dbd_module (shared)
 authn_dbm_module (shared)
 authn_file_module (shared)
 authn_socache_module (shared)
 authz_core_module (shared)
 authz_dbd_module (shared)
 authz_dbm_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_owner_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cache_module (shared)
 cache_disk_module (shared)
 data_module (shared)
 dbd_module (shared)
 deflate_module (shared)
 dir_module (shared)
 dumpio_module (shared)
 echo_module (shared)
 env_module (shared)
 expires_module (shared)
 ext_filter_module (shared)
 filter_module (shared)
 headers_module (shared)
 include_module (shared)
 info_module (shared)
 log_config_module (shared)
 logio_module (shared)
 mime_magic_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 remoteip_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 slotmem_plain_module (shared)
 slotmem_shm_module (shared)
 socache_dbm_module (shared)
 socache_memcache_module (shared)
 socache_shmcb_module (shared)
 status_module (shared)
 substitute_module (shared)
 suexec_module (shared)
 unique_id_module (shared)
 unixd_module (shared)
 userdir_module (shared)
 version_module (shared)
 vhost_alias_module (shared)
 dav_module (shared)
 dav_fs_module (shared)
 dav_lock_module (shared)
 lua_module (shared)
 mpm_prefork_module (shared)
 proxy_module (shared)
 lbmethod_bybusyness_module (shared)
 lbmethod_byrequests_module (shared)
 lbmethod_bytraffic_module (shared)
 lbmethod_heartbeat_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_connect_module (shared)
 proxy_express_module (shared)
 proxy_fcgi_module (shared)
 proxy_fdpass_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_scgi_module (shared)
 proxy_wstunnel_module (shared)
 systemd_module (shared)
 cgi_module (shared)
 wsgi_module (shared)

$ ldd /scratch/ohs/middleware/ohs/modules/mod_wsgi.so
        linux-vdso.so.1 =>  (0x00007ffd21c67000)
        libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 
(0x00007fa03afac000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007fa03ad8f000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007fa03a9c1000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007fa03a7bd000)
        libutil.so.1 => /usr/lib64/libutil.so.1 (0x00007fa03a5b9000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007fa03a2b7000)
        /lib64/ld-linux-x86-64.so.2 (0x000055f61a899000)

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/87a7bfa7-eb07-4aad-b041-27fb67995e33%40googlegroups.com.

Reply via email to