como descobrir todos os processos de PID do Apache httpd que estão em estado de leitura?

2

O servidor web Apache no meu RHEL mostra muitas solicitações no estado R (leitura ...). Eu quero encontrar os IPs do cliente que estão fazendo o Apache esperar no estado de leitura. Especificamente: desejo descobrir todos os IPs de clientes que estão gastando muito tempo para enviar a solicitação.

O módulo status do servidor não é suficiente. O status do servidor não mostra as informações do cliente quando o PID está no estado de leitura.

    
por Sabya 19.05.2011 / 10:10

2 respostas

3

Tente usar o programa netstat com o sinal -l para obter uma lista do processo de escuta. Você provavelmente deseja executá-lo com sudo para poder usar o sinalizador -p para obter PIDs de processo. Você também pode querer que o -t flag mostre apenas sockets tcp em vez de tcp e udp. Às vezes, o -n flag é bom para mostrar apenas números de porta e IPs sem resolvê-los para serviços e nomes.

Depois disso, é uma questão de buscar apenas o processo do apache e extrair o PID das colunas de saída:

sudo netstat -lntp | grep httpd | awk -F '[/ ]*' '{print $7}'
    
por 19.05.2011 / 10:37
0

Para descobrir os detalhes sobre as conexões que estão gastando mais de 15 segundos na fase de leitura da solicitação HTTP, eu escrevi este comando:

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)"
    
por 20.05.2011 / 07:29