Graham,

I think you're right that keep alive is the culprit here.  I should
have a chance to do some further testing on our environment later this
week and will report back on how it goes.

Thanks,

Fraser


On Nov 5, 12:11 pm, Graham Dumpleton <graham.dumple...@gmail.com>
wrote:
> On Friday, November 5, 2010, Fraser <fras...@gmail.com> wrote:
> > We are seeing an issue where performing a graceful restart of Apache
> > results in a 503 response for a small number of requests made
> > immediately following the restart.
>
> > I enabled debug-level logging within Apache, and see the following
> > entries relating to one of the WSGI daemons in question:
>
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12455): Shutdown
> > requested 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12455): Stopping
> > process 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12455): Destroying
> > interpreters.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12455): Cleanup
> > interpreter ''.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12451): Shutdown
> > requested 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12451): Stopping
> > process 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12451): Destroying
> > interpreters.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12451): Cleanup
> > interpreter ''.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12455): Terminating
> > Python.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12455): Python has
> > shutdown.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12444): Shutdown
> > requested 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12444): Stopping
> > process 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12444): Destroying
> > interpreters.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12444): Cleanup
> > interpreter ''.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12451): Terminating
> > Python.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12451): Python has
> > shutdown.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Shutdown
> > requested 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Stopping
> > process 'myprocname'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Destroying
> > interpreters.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Destroy
> > interpreter 'hostname:port|'.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12444): Terminating
> > Python.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12444): Python has
> > shutdown.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Cleanup
> > interpreter ''.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Terminating
> > Python.
> > [Thu Nov 04 10:15:01 2010] [info] mod_wsgi (pid=12443): Python has
> > shutdown.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12740): Starting
> > process 'myprocname' with uid=48, gid=502 and threads=1.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12741): Starting
> > process 'myprocname' with uid=48, gid=502 and threads=1.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12742): Starting
> > process 'myprocname' with uid=48, gid=502 and threads=1.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12727): Starting
> > process 'myprocname' with uid=48, gid=502 and threads=1.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12727): Initializing
> > Python.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12727): Attach
> > interpreter ''.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12740): Initializing
> > Python.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12741): Initializing
> > Python.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12741): Attach
> > interpreter ''.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12742): Initializing
> > Python.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12742): Attach
> > interpreter ''.
> > [Thu Nov 04 10:15:02 2010] [info] mod_wsgi (pid=12740): Attach
> > interpreter ''.
> > [Thu Nov 04 10:15:06 2010] [error] [client XXX.XXX.XXX.XXX] (2)No such
> > file or directory: mod_wsgi (pid=12523): Unable to connect to WSGI
> > daemon process 'myprocname' on '/var/wsgi/wsgi.12667.55.10.sock' after
> > multiple attempts.
> > [Thu Nov 04 10:15:06 2010] [info] mod_wsgi (pid=12523): Destroying
> > interpreters.
> > [Thu Nov 04 10:15:06 2010] [info] mod_wsgi (pid=12523): Cleanup
> > interpreter ''.
> > [Thu Nov 04 10:15:06 2010] [info] mod_wsgi (pid=12523): Terminating
> > Python.
> > [Thu Nov 04 10:15:06 2010] [info] mod_wsgi (pid=12523): Python has
> > shutdown.
>
> > From these logs, it looks like is that the request is trying to
> > connect to the old WSGI socket, which has already been destroyed. This
> > doesn't seem correct/ideal behaviour.
>
> > I'm not very familiar with the inner workings of Apache or mod_wsgi,
> > but my guess is that this may be caused by one of the following
> > scenarios:
>
> > 1. An "old" Apache process is trying to handle a request following a
> > graceful restart.
>
> How long after the restart?
>
> When doing a graceful restart, there may be a small window where an
> existing Apache child process hasn't properly stopped accepting new
> requests when waiting for existing requests to complete. This may be
> made worse by keep alive connections with existing child server
> process not being able to shutdown and with it accepting new request
> on the existing connection. In that latter situation especially you
> can technically see this issue.
>
> Try turning off keep alive and see if the problem persists. Besides
> that, not much you can do in Apache as Apache doesn't provide a way of
> extending graceful restart mechanism to what it regards as 'other'
> child processes. Putting nginx in front can help if you are concerned
> about lack of keep alive as then it will handle it. Having nginx in
> front brings a lot of other benefits as well.
>
> BTW, what else is running on this server? Is it just the WSGI
> application or is it handling static files, or non Python dynamic web
> applications as well?
>
> Graham
>
> > My understanding is that a graceful restart should
> > result in new Apache process being created and the old ones only being
> > used to complete requests already in progress before being destroyed.
>
> > 2. The request is being handled by a newly spawned Apache process, but
> > somehow it has a reference to the old (and now defunct) mod_wsgi
> > socket.
>
> > Has anyone else experienced this and come up with a workaround, or is
> > this a bug within Apache/mod_wsgi?
>
> > Thanks,
>
> > Fraser
>
> > P.S. Environment is RHEL5 with Apache 2.2.3 and mod_wsgi 3.3.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "modwsgi" group.
> > To post to this group, send email to modw...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > modwsgi+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://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 modw...@googlegroups.com.
To unsubscribe from this group, send email to 
modwsgi+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to