Uso de memória php-cgi maior que o limite de memória do php

Uso de memória php-cgi maior que o limite de memória do php

Estou executando o Apache com um trabalhador MPM e php com fastcgi.

a seguir estão meus limites de mpm:

StartServers         5
MinSpareThreads      5
MaxSpareThreads      10
ThreadLimit          64
ThreadsPerChild      10
MaxClients           10
MaxRequestsPerChild  2000

Também configurei meu php-cgi com o seguinte:

PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=500

Estou percebendo que meu processo php-cgi médio está usando cerca de 200 MB de RAM, mesmo assim que são iniciados. No entanto, meu limite de memória do php é de apenas 128M.

Como isso é possível e o que posso fazer para diminuir o consumo de memória do php-cgi?

Responder1

Há casos em que o PHP pode exceder o limite de memória configurado (memória alocada diretamente nas extensões), mas suspeito que esse não seja o caso.

Estou percebendo que meu processo php-cgi médio está usando cerca de 200 MB

Como você mediu isso? A maioria dos segmentos TXT serão compartilhados - portanto, o uso real de memória é muito menor do que você veria no sistema de arquivos /proc ou em ps/top. Embora você possa tentar analisar a saída de lsof, na prática acho muito mais sensato recuar um pouco e observar o número de solicitações em andamento (por exemplo, do número de soquetes conectados) e comparar isso com a memória livre relatada ( menos buffers/cache).

Responder2

O limite de memória em PHP é o limite de memória interna - ou seja, essa é a quantidade que o mecanismo permitiria que o script do usuário alocasse através de seu alocador privado. Mas além disso há memória que é alocada pelo motor para suas necessidades internas, que nem sempre é contabilizada no limite (parte é, mas não toda), a memória sendo alocada por bibliotecas, etc. o uso seja um pouco maior que memory_limita configuração.

Além disso, como mencionado acima, alguns dos números relatados pelas ferramentas são memória alocada para o código, pilha, buffers de E/S do sistema operacional, memória compartilhada entre bibliotecas, etc.

informação relacionada