Como posso monitorar qual processo está trocando?

4

Eu tenho um servidor web linux. Ele está executando o Apache e um aplicativo da web baseado em python e postgres. É bem devagar. Ao executar ab (referência do apache) e vmstat , pude ver que estava trocando enquanto as solicitações chegavam.

Existe algum programa que me diga dinamicamente quais processos estão causando essa permuta?

    
por Rory 11.06.2009 / 16:40

4 respostas

4

iotop é provavelmente o que você procura. Você precisará do Python 2.5 ou superior instalado, o que é provável. Você também precisará de algumas opções do kernel (2.6.20 ou posterior) ativadas (TASK_DELAY_ACCT e TASK_IO_ACCOUNTING) para que as métricas corretas sejam expostas em / proc para que o iotop as use.

    
por 11.06.2009 / 16:56
2

Você definitivamente deve remover todos os módulos desnecessários do apache. Importa muito . Desativar status estendido, indexação automática etc.

definindo AllowOverride como "None" e fazendo qualquer coisa de htaccess na configuração do servidor ajudará com E / S e reduzirá o tempo de resposta, e isso resultará em menos uso de memória por minuto.

Consulte o guia de desempenho do apache .

Procure também a documentação do postgresql para melhorar o desempenho e reduzir o uso da memória.

Provavelmente, seu maior problema de memória é o programa python, já que o Python não é muito otimizado para uso com pouca memória. Você pode tentar um profiler no aplicativo.

    
por 11.06.2009 / 23:48
1

Se a atividade for durante a execução de várias solicitações HTTP, e não em outros momentos, os processos Apache e python estarão ativamente causando a atividade de troca.

Não há muito mais do que isso, podemos dizer sem um pouco mais de informação.

  • Como você está executando os scripts python? (CGI, FCGI, mod_python, outro?)
  • Quantas solicitações simultâneas foram solicitadas para tentar?
  • Quanta memória está na máquina? (Poderia ser apenas que a máquina é subdimensionada para o trabalho)
  • Quantos processos do Apache estão sendo executados?
  • Se o FGCI, quantos processos do Python você tem em execução?

Em geral, para reduzir o uso de memória do Apache, você precisa reduzir o número de processos-filhos que iniciará alterando os arquivos de configuração, o mesmo para o número de processos python, se você estiver usando o FastCGI.

    
por 11.06.2009 / 17:01
1

Mas o problema subjacente é ...

Não podemos ver ou saber muito sobre como o Linux lida com a memória com os comandos atuais ps ou top. É um mistério.

E ainda mais com sistemas multi-core, aplicativos de contabilidade de sistema precisam melhorar no Linux

    
por 07.08.2010 / 04:19