Uma recomendação improvisada seria reduzir os valores definidos - provavelmente cortá-los pela metade.
Você tem: pm.max_children = 10 Se você disser 35MB / process = 350MB; em uma caixa de 256MB que significa muita troca ou falta de memória - nem é bom.
Eu diria que pelo menos 100MB para outros processos, talvez até 150MB, para ser seguro, e depois dividir esse número por 35MB para obter o max_children. Mantenha todos os outros números na fila:
pm = dynamic
pm.max_children = 4
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 2
pm.max_requests = 500
Pare o PHP-FPM e execute free
para ter uma ideia da sua memória disponível - divida por seus 35MB para obter seu max_children.
Dependendo da quantidade de memória que o MySQL leva, você pode ter que diminuir max_children para 3.
Eu acho que os processos do PHP-FPM compartilham muita memória, fazem um experimento rápido para determinar o quanto é realmente usado. Pare o PHP-FPM e execute free
. Inicie o PHP-FPM para visitar algumas páginas comuns (necessário, pois a memória aumenta dependendo das páginas carregadas) e verifique a memória total usada, novamente usando free
- divida a diferença pelo número de processos. Não é um sistema perfeito, mas acho que é bastante preciso (às vezes a coluna de dados no topo também não é ruim).