Since you are using daemon mode and only the one application running in that
daemon process, add:
WSGIApplicationGroup %{GLOBAL}
Various C extension modules for Python are not implemented correctly so as to
work in the default sub interpreter model used by mod_wsgi. That directive will
force the application to run in the main interpreter context, potentially
avoiding problems, such as deadlocks.
More details can be found in:
https://code.google.com/p/modwsgi/wiki/ApplicationIssues#Python_Simplified_GIL_State_API
Graham
> On 28 Sep 2015, at 11:36 pm, 'Lukasz Szajkowski' via modwsgi
> <[email protected]> wrote:
>
> Hi ,
>
> I have a problem with mod_wsgi (3.4-14) / Apache 2.4.12 / cx_oracle 5.2 /
> Oracle 12 / Django 1.8.2 hanging under bigger load.
> The configuration was used for the last several month in dev / testing.
>
> Now when deployed to production environment Apache hangs after couple of
> minutes under bigger load (it works fine with small or moderate load).
>
> I have a cluster of 3 Django/Apache/mod_wsgi servers and when this problems
> happens each server stops responding (one by one) within 5 - 15 minutes.
>
>
> Here is my configuration
>
> I am using Python 3.3 and Apache 2.4.12 and mod_wsgi-3.4-14 from Red Hat
> (6.7) Software Collection
>
> Apache Virtual Host
> <VirtualHost *:8080>
> ...
> WSGIDaemonProcess app.prod processes=2 threads=25
> display-name=%{GROUP} user=MY_USER python-path=MY_PATH
> WSGIProcessGroup app.prod
> WSGIScriptAlias / /opt/hosts/app/app/wsgi.py
> </VirtualHost>
>
> Apache version
> Server version: Apache/2.4.12 (Red Hat)
> Server built: Aug 11 2015 08:12:59
> Server's Module Magic Number: 20120211:41
> Server loaded: APR 1.5.1, APR-UTIL 1.5.4
> Compiled using: APR 1.5.1, APR-UTIL 1.5.4
> Architecture: 64-bit
> Server MPM: worker
> threaded: yes (fixed thread count)
> 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="/opt/rh/httpd24/root/etc/httpd"
> -D SUEXEC_BIN="/opt/rh/httpd24/root/usr/sbin/suexec"
> -D DEFAULT_PIDLOG="/opt/rh/httpd24/root/var/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"
>
> python33-mod_wsgi-3.4-14.el6.x86_64
>
> Django db configuration
> 'default': {
> 'ENGINE': 'django.db.backends.oracle',
> 'NAME': 'DB_NAME',
> 'USER': 'webuser',
> 'PASSWORD': 'webpassword',
> 'HOST': '',
> 'PORT': '',
> 'CONN_MAX_AGE': None,
> 'OPTIONS': {
> 'threaded': True,
> },
> },
>
>
> [root@taseapp-em1-02 ~]# pstack 17044
> Thread 4 (Thread 0x7fb6ffb4b700 (LWP 17053)):
> #0 0x00007fb70cf90423 in select () from /lib64/libc.so.6
> #1 0x00007fb70d488535 in apr_sleep () from
> /opt/rh/httpd24/root/usr/lib64/libapr-1-httpd24.so.0
> #2 0x00007fb7021d4340 in ?? () from
> /opt/rh/httpd24/root/etc/httpd/modules/mod_python33-wsgi.so
> #3 0x00007fb70d24aa51 in start_thread () from /lib64/libpthread.so.0
> #4 0x00007fb70cf979ad in clone () from /lib64/libc.so.6
> Thread 3 (Thread 0x7fb6ff14a700 (LWP 17054)):
> #0 0x00007fb70cf90423 in select () from /lib64/libc.so.6
> #1 0x00007fb70d488535 in apr_sleep () from
> /opt/rh/httpd24/root/usr/lib64/libapr-1-httpd24.so.0
> #2 0x00007fb7021d3ffb in ?? () from
> /opt/rh/httpd24/root/etc/httpd/modules/mod_python33-wsgi.so
> #3 0x00007fb70d24aa51 in start_thread () from /lib64/libpthread.so.0
> #4 0x00007fb70cf979ad in clone () from /lib64/libc.so.6
> Thread 2 (Thread 0x7fb6fe749700 (LWP 17055)):
> #0 0x00007fb70d2519b8 in fcntl () from /lib64/libpthread.so.0
> #1 0x00007fb70d47b3a2 in ?? () from
> /opt/rh/httpd24/root/usr/lib64/libapr-1-httpd24.so.0
> #2 0x00007fb7021de4d8 in ?? () from
> /opt/rh/httpd24/root/etc/httpd/modules/mod_python33-wsgi.so
> #3 0x00007fb70d24aa51 in start_thread () from /lib64/libpthread.so.0
> #4 0x00007fb70cf979ad in clone () from /lib64/libc.so.6
> Thread 1 (Thread 0x7fb70e6e57e0 (LWP 17044)):
> #0 0x00007fb70cf8e183 in poll () from /lib64/libc.so.6
> #1 0x00007fb70d484480 in apr_poll () from
> /opt/rh/httpd24/root/usr/lib64/libapr-1-httpd24.so.0
> #2 0x00007fb7021d8cf7 in ?? () from
> /opt/rh/httpd24/root/etc/httpd/modules/mod_python33-wsgi.so
> #3 0x00007fb7021d9b51 in ?? () from
> /opt/rh/httpd24/root/etc/httpd/modules/mod_python33-wsgi.so
> #4 0x00007fb7021df017 in ?? () from
> /opt/rh/httpd24/root/etc/httpd/modules/mod_python33-wsgi.so
> #5 0x00007fb70e73d4f9 in ap_run_post_config ()
> #6 0x00007fb70e71c78f in main ()
>
>
> If I reduce the number of mod_wsgi then the problem goes away but the
> performance is not acceptable
>
> WSGIDaemonProcess app.prod processes=4 threads=1 display-name=%{GROUP}
> user=MY_USER python-path=MY_PATH
>
> Could anybody suggest what could be the cause or how could I debug it please?
>
> Thanks,
> Lukasz
>
>
> --
> 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]
> <mailto:[email protected]>.
> To post to this group, send email to [email protected]
> <mailto:[email protected]>.
> Visit this group at http://groups.google.com/group/modwsgi
> <http://groups.google.com/group/modwsgi>.
> For more options, visit https://groups.google.com/d/optout
> <https://groups.google.com/d/optout>.
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.