Estamos executando um site pesado do Drupal que realiza modelagem financeira. Parece que estamos enfrentando algum tipo de vazamento de memória, devido ao fato de que horas extras a memória usada pelo apache aumenta enquanto o número de processos do apache permanece estável:
Sabemos que o problema de memória é proveniente do apache / PHP, porque sempre que emitimos uma /etc/init.d/httpd reload
queda no uso da memória (veja a captura de tela acima e as saídas da CLI abaixo):
Antes do httpd recarregar
$ grátis total de buffers compartilhados gratuitos usados em cache Mem: 49447692 45926468 3521224 0 191100 22609728 - / + buffers / cache: 23125640 26322052 Troca: 2097144 536552 1560592
Após o httpd recarregar
$ grátis total de buffers compartilhados gratuitos usados em cache Mem: 49447692 28905752 20541940 0 191360 22598428 - / + buffers / cache: 6115964 43331728 Troca: 2097144 536552 1560592
A cada thread do apache é atribuído um PHP memory_limit
de 512MB, o que explica o alto uso de memória, representando o baixo volume de solicitações e um intervalo max_execution_time
de 120 segundos que deve encerrar os threads cuja execução está demorando mais tempo e, portanto, impedir o crescimento constante do uso de memória. vendo.
P: Como podemos investigar o que está causando esse vazamento de memória?
Idealmente, estou procurando por etapas de solução de problemas que eu possa executar no sistema sem precisar incomodar a equipe de desenvolvimento.
Informação adicional:
OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6
Para sua informação, estamos cientes do problema de troca que estamos investigando separadamente e não tem nada a ver com o vazamento de memória que observamos antes do início da troca.
memcached
biblioteca PHP . Com base na página de administração do memcache memcache.php
, tudo o que podemos ver é que alocamos 5GB
ao memcache, o qual 3.3GB
está sendo usado. Seria ótimo se você puder nos ajudar mais aqui.
memcached
daemon em si provavelmente está bem. É a biblioteca memcache PHP que pode ou não vazar memória (e, assim, aumentar o Apache processa o uso de memória). Meu problema ocorreu há cerca de um ou dois anos, então as coisas podem ter sido corrigidas depois disso. De qualquer forma, se o memcached não for obrigatório para você, tente desativá-lo por um tempo e veja se o uso de memória do Apache ainda aumenta.
httpd
, o uso da memória continuará aumentando e a caixa eventualmente trava com algumas mensagens do kernel com falta de memória. O desempenho é bom (até que o uso da memória esteja se aproximando do limite de memória). Ignore o problema de troca.