On 15 April 2011 06:35, Carl Nobile <[email protected]> wrote:
> It looks like you are running a single process with 50 threads, I think you
> should use more processes with less threads something like this:
>
> WSGIDaemonProcess site-1 user=django group=django processes=5 threads=10
> maximum-requests=1000
> WSGIProcessGroup site-1
> WSGIScriptAlias / /somepath/django.wsgi /somepath/django.wsgi
>
> The 'maximum-requests=1000' will kill each thread after a 1000 requests and
> create a new one, this helps to keep memory leaks to a minimum.

Sorry to correct you Carl, but that isn't quite how it works.

I'll respond in more detail later to original question. Still 7am here
and just got off phone from a work meeting. So need to wake up a bit
more first. :-)

Graham

> ~Carl
>
> On Thu, Apr 14, 2011 at 3:18 PM, Chase <[email protected]> wrote:
>>
>> I have a custom Django app that's becoming unresponsive
>> intermittently. About once every couple of days between three servers,
>> serving about 10,000 requests a day. When it happens, it never
>> recovers. I can leave it there for hours, and it will not server any
>> more requests.
>>
>>
>> In the apache logs, I see see the following:
>>
>> Apr 13 11:45:07 www3 apache2[27590]: **successful view render here**
>> ...
>> Apr 13 11:47:11 www3 apache2[24032]: [error] server is within
>> MinSpareThreads of MaxClients, consider raising the MaxClients setting
>> Apr 13 11:47:43 www3 apache2[24032]: [error] server reached MaxClients
>> setting, consider raising the MaxClients setting
>> ...
>> Apr 13 11:50:34 www3 apache2[27617]: [error] [client 10.177.0.204]
>> Script timed out before returning headers: django.wsgi
>> (repeated 100 times, exactly)
>>
>>
>> I am running:
>>
>> apache version 2.2, using the worker MPM
>> wsgi version 2.8
>> SELinux NOT installed
>> lxml package being used, infrequently
>> Ubuntu 10.04
>>
>>
>> apache config:
>>
>> WSGIDaemonProcess site-1 user=django group=django threads=50
>> WSGIProcessGroup site-1
>> WSGIScriptAlias / /somepath/django.wsgi /somepath/django.wsgi
>>
>>
>> wsgi config:
>>
>> import os, sys
>> sys.path.append('/home/django')
>> os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
>> import django.core.handlers.wsgi
>> application = django.core.handlers.wsgi.WSGIHandler()
>>
>>
>> When this happens, I can kill the wsgi process and the server will
>> recover.
>>
>> >ps aux|grep django # process is running as user "django"
>> django   27590  5.3 17.4 908024 178760 ?       Sl   Apr12  76:09 /usr/
>> sbin/apache2 -k start
>> >kill -9 27590
>>
>>
>> This leads me to believe that the problem is a known issue:
>>
>> "(deadlock-timeout) Defines the maximum number of seconds allowed to
>> pass before the daemon process is shutdown and restarted after a
>> potential deadlock on the Python GIL has been detected. The default is
>> 300 seconds. This option exists to combat the problem of a daemon
>> process freezing as the result of a rouge Python C extension module
>> which doesn't properly release the Python GIL when entering into a
>> blocking or long running operation."
>>
>>
>> However, I'm not sure why this condition is not clearing
>> automatically. I do see that the script timeout occurs exactly 5
>> minutes after the last successful page render, so the deadlock-timeout
>> is getting triggered. But it does not actually kill the process.
>>
>> I'm thinking of switching to MPM/prefork, but I'm not sure if that
>> should have any effect, given that I'm in daemon mode already.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "modwsgi" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/modwsgi?hl=en.
>>
>
>
>
> --
> -------------------------------------------------------------------------------
> Carl J. Nobile (Software Engineer)
> [email protected]
> -------------------------------------------------------------------------------
>
> --
> You received this message because you are subscribed to the Google Groups
> "modwsgi" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/modwsgi?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to