RHEL中的Apache Web服务器在R(..reading ..)状态下显示很多请求。 我想find正在使Apache等待阅读状态的客户端IP。 具体来说:我想找出花费太长时间发送请求的所有客户端IP。
服务器状态模块是不够的。 服务器状态在PID处于读取状态时不显示客户端信息。
尝试使用带-l标志的netstat程序来获取监听进程的列表。 你可能想用sudo来运行它,这样你可以使用-p标志来获得进程的PID。 您可能还希望-t标志仅显示tcp套接字而不是tcp和udp。 有时-n标志很好地显示端口号和IP,而不解决它们的服务和名称。
之后,这只是你的Apache进程的问题,然后从输出列中提取PID:
sudo netstat -lntp | grep httpd | awk -F '[/ ]*' '{print $7}'
为了find在HTTP请求阅读阶段花费超过15秒的连接的细节,我写了这个命令:
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)"