Eu não acho que a configuração do seu servidor esteja relacionada ao seu problema, mas vamos resolver isso primeiro: o mod_fastcgi irá cuidar de gerar processos PHP e somente alimentar um pedido de uma vez para cada processo (AFAIK, eu sou um usuário mod_fcgid ). Assim, é inútil pedir ao PHP para bifurcar outros processos, você preferiria ter PHP_FCGI_CHILDREN = 0 para desativar este recurso.
Lately the apache logs have been telling me that MaxClients is being reached frequently, even though it's already pretty high.
O seu MaxClients é 20, nos meus sites de MPM está no 5000-10,000 ballpark! Isso é muito baixo.
Tenha em mente que o MaxClients regula apenas o conjunto de processos do Apache, e o Apache é muito escalável para servir milhares de conexões simultâneas.
Você pode regular separadamente seu pool de processos FastCGI com opções mod_fastcgi. Eu só posso ajudar com uma sólida experiência em mod_fcgid, desculpe. Esse pool de processos tem, na maioria das vezes, um tamanho entre 1x e 4x o número de núcleos de CPU.
[Sun Mar 06 04:25:40 2011] [error] [client 50.16.83.115] FastCGI: comm with (dynamic) server "/var/local/fcgi/php-cgi-wrapper.fcgi" aborted: (first read) idle timeout (20 sec)
Seu aplicativo não pôde enviar um único byte em 20 segundos, o que é muito lento. Você terá que encontrar o gargalo. Como regra geral, se a média de carga é alta, há uma boa mudança na CPU ou no limite de E / S (depois, verifique o uso da CPU); Caso contrário, se a carga estiver baixa, verifique se há espera em recursos remotos (servidor de banco de dados, APIs de terceira parte e assim por diante).