Getting graceful signal delivered to worker processes and IP onServer Status page

Getting graceful signal delivered to worker processes and IP onServer Status page

am 04.05.2010 20:12:11 von eake

I have two related questions.

1) I have an instance where I use mod_perl to handle persistent connections. This is done under Linux and Apache 2.2.15. There are multiple servers and multiple children under each server.

If I send a graceful, it seems like the parent gets the signal but the children do not. Since these are persistent connections, if I could get the signal sent down to the children, I could handle it and cause each child to exit gracefully. I do show the signal is getting delivered as I enabled the Apache2::ServerUtil::server_shutdown_cleanup_register to call a function and log the signal but I see one instance written to the log and not one per server. How can this be done?

2) I would also like to know if I can do anything about the status page showing more information about those persistent connections. The Client and VHost show '?' and the Request shows '..reading..'. These children are always in the read state until they receive data. They then process the data, send the response, then go back to read until the client disconnects. I would like to know if it is possible for the Client IP to show up on the status page. Currently the status lines look like:

Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 4021 0/0/0 R 0.00 23628 0 0.0 0.00 0.00 ? ? ..reading..
0-0 4021 0/0/0 R 0.00 22517 0 0.0 0.00 0.00 ? ? ..reading..
0-0 4021 0/0/0 R 0.00 9085 0 0.0 0.00 0.00 ? ? ..reading..
0-0 4021 0/0/0 R 0.00 2367 0 0.0 0.00 0.00 ? ? ..reading..

I would like to see the client show up like:

Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 4021 0/0/0 R 0.00 23628 0 0.0 0.00 0.00 10.1.1.2 ? ..reading..

Is this an issue in mod_perl not setting the ws_record->client? I do have access to the remote IP via $connection->remote_ip so why is it not showing up in the status page? I did try to modify the line in mod_status to show the client and vhost if the status was SERVER_BUSY_READ but nothing shows up like:

Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 4021 0/0/0 R 0.00 23628 0 0.0 0.00 0.00 ..reading..