Depois de alternar pm de dynamic
para ondemand
, estou tendo menos problemas com o uso de memória em meu VPS de 1 GB, mas parece que, em algumas situações de alta carga, o servidor ainda fica preso. É um VMWare VPS com 1GB de RAM real e 4GB de 'RAM falsa' (SSD Cache).
Instalei o monitoramento do servidor newrelic e percebi que o problema ainda parece ser o php5-fpm. O servidor tem um carregamento de 150 (sistema de 2 cpu) e todos os pools php-fpm geram o máximo de 10 filhos, o que consome quase 2,5 GB de RAM, enquanto o uso médio de RAM no sistema é de 300 MB.
Se eu entendi ondemand
corretamente, todas as configurações sobressalentes do servidor não são úteis e os childs gerados devem morrer após a conclusão da solicitação. Então, a única coisa que eu poderia fazer é baixar max_children
ainda mais, mas como eu tenho 30+ pools eu acho que isso não me ajudaria de qualquer maneira.
Esta é a configuração padrão do meu pool:
[web2]
listen = 127.0.0.1:9011
listen.allowed_clients = 127.0.0.1
user = web2
group = client1
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 10s;
pm.max_requests = 0
Alguém tem uma ideia de como otimizar essa configuração para que o servidor não seja interrompido em situações de alta carga?
****** EDIT ******
Eu tentei process.max = 32
, mas não tenho certeza se isso está mudando alguma coisa ao usar ondemand
. O servidor entrou em colapso novamente hoje e não tenho idéia do problema. Tráfego totalmente moderado. Se eu apressar usando blitz.io em uma página tudo vai bem. Ele gera todos os 10 filhos e entrega as páginas o mais rápido que puder, ao mesmo tempo em que entrega um número de 500 a mais solicitações sem fazer o servidor explodir.