Depuração do vazamento de memória do httpd

2

Estou executando o seguinte em um Dell R610 (Quad core e 12 GB de RAM): Servidor Red Hat Enterprise Linux versão 5.5 httpd 2.2.3 PHP 5.1.6

O aplicativo da Web em execução neste servidor está vazando memória aleatoriamente. Desde que o aplicativo é bastante grande eu passei hoje tentando encontrar uma maneira de perfil ou rastrear o script culpado. A melhor ferramenta que tenho até agora é strace usando strace -p PID -tt -o trace4.log -s 256 . Infelizmente, o uso de memória pode saltar de 20m para 791m em questão de segundos, portanto, a execução de strace no processo culpado não resulta em nada útil.

Eu tentei iniciar o httpd usando strace strace -f -o trace_all.log /etc/init.d/httpd start , mas infelizmente isso causa atraso e falta de resposta, pois o site recebe tráfego bastante alto.

Eu entendo que não é uma prática recomendada depurar no ambiente de produção, mas estou tentando restringir qual página e / ou script está causando esse problema e não consegui replicar o problema durante o teste no ambiente de desenvolvimento

Qualquer sugestão seria muito apreciada.

    
por Robin 30.11.2010 / 21:39

1 resposta

3

Outra maneira, menos intrusiva, para ter uma idéia de onde a memória está indo é executar o pmap. A execução do pmap -x irá despejar uma lista de toda a memória alocada para o processo. Ele é dividido por endereço de memória e inclui o tamanho da alocação, se a memória é privada para este processo ou compartilhada, e um mapeamento sobre o que está sendo usado por essa memória (biblioteca / pilha compartilhada).

    
por 30.11.2010 / 21:52