Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

The Apache web server in my RHEL shows many requests in R (..reading..) state. I want to find the client IPs that are making Apache wait in reading state. Specifically: I want to find out all the client IPs that are spending too long to send the request.

The server-status module is not enough. Server status does not show the client information when the PID is in reading state.

share|improve this question

2 Answers 2

Try using netstat program with the -l flag to get a list of listening process. You probably want to run it with sudo so that you can use the -p flag to get process PIDs. You might also want the -t flag to only show tcp sockets instead of tcp and udp. Sometimes the -n flag is nice to show only port numbers and IPs without resolving them to services and names.

After that it's a matter of greping for just your apache process and then extracting the PID from the output columns:

sudo netstat -lntp | grep httpd | awk -F '[/ ]*' '{print $7}'
share|improve this answer

To find out the details about connections which are spending more than 15 seconds in HTTP request reading phase, I wrote this command:

links http://localhost/server-status | tee | grep "..reading.." | awk '{if ($6>15) print "lsof -a -n -i TCP -p"$2}' | sh |  grep -E "TCP.*(ESTABLISHED)"
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.