O ajuste de desempenho e a identificação de gargalos como esse são um problema difícil de resolver e frequentemente exigem muitas informações para serem diagnosticadas. A chave para o processo é percorrer o processo que ele usa e ver se você pode descobrir qual recurso está sendo exaurido. Quando você disse que o servidor não está respondendo por php, mas html ainda serve, que é um ponto de dados interessante. O que é diferente entre como eles são servidos? Pode ser um buffer de rede sutil, ou pode ser mais básico do que isso. Você pode ter simplesmente esgotado o limite do processo filho de 20 filhos fcgi, e todos eles estão ocupados servindo dados, enquanto novas solicitações estão sendo congestionadas na fila de escuta (e expirando eventualmente) esperando que um processo fcgi php apareça.
O truque real ao tentar obter visibilidade na caixa é entrar na caixa quando estão ocorrendo problemas e começar a coletar informações.
Para descobrir quantos processos php estão em execução, você poderá executar algo assim:
ps auxgmww | grep php
E se você quiser contá-las em vez de contá-las você mesmo, você pode fazer algo assim:
ps auxgmww | grep php | wc -l
De volta à sua pergunta original sobre o ajuste de desempenho, antes de alterar o syctl.conf, você pode querer ver o que seu servidor está dizendo quando o problema está ocorrendo, você pode descobrir isso fazendo o seguinte:
sysctl -a > sysctl.txt
E, em seguida, veja o seu arquivo de texto - é um monte de dados, mas antes de ajustar qualquer valor, veja se a saída sysctl relata qualquer coisa sobre o que está sendo usado naquele ajuste e o que ele está consumindo. Um exemplo são os arquivos abertos, que você pode ver uma amostra de saída aqui:
fs.file-nr = 3456 0 102295
Isso nos diz que estamos usando descritores de arquivos 3456, mas nosso limite é 102295, por isso não estamos nem perto do limite. Se o primeiro número estivesse no intervalo de 100.000, isso diria que você está ficando sem descritores de arquivos e é isso que você precisa ajustar.