Erro intermitente 404 durante cargas mais altas. (nginx/php/apc/mysql)

Erro intermitente 404 durante cargas mais altas. (nginx/php/apc/mysql)

Eu tenho um VPS de 4 núcleos de CPU com 4 GB de RAM. Ele está executando o Ubuntu 10.04 com nginx/0.7.65, PHP 5.3.2 e MySQL. Eu uso php5-fpm para comunicação com o nginx. Eu também tenho o php5-apc complementando o cache do php.

Este sistema administra quatro sites e mostra aproximadamente 2,5 milhões de visualizações de páginas por dia.

Introdução ao problema - Os sites mostrarão intermitentemente o erro 404 ao carregar uma página. Isso potencialmente acontece em todas as páginas, e posso sentar lá e atualizar continuamente e isso acontecerá em média uma vez a cada sete a dez vezes.

O que eu tentei - Atualizar Ubuntu e nginx, brincar com configurações de php e nginx. este problema foi replicado no Ubuntu 11.10 e nginx/1.0.5.

Logs notáveis ​​- Nginx error.log e access.log não mostram nada fora do comum, mas relatam quando um 404 é emitido. php5-fpm.log exibe:
Nov 20 21:47:45.640003 [ERROR] [pool www] unable to retrieve process activity of one or more child(ren). Will try again later.
mas não estou convencido de que esteja relacionado a esse problema, como já vi em configurações anteriores.

Configurações (links para imagens para economizar espaço) - * Configurações de APC, observe Fragmentação: 0% e contagem total do cache é 0.https://i.stack.imgur.com/i0TrK.png * nginx.conf

user www-data;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
# multi_accept on;
}
http {
include       /etc/nginx/mime.types;
server_names_hash_bucket_size 64;
access_log off;  #/var/log/nginx/access.log;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  0;
#keepalive_timeout  65;
tcp_nodelay        on;

gzip  on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
  • configuração típica do site incluída no nginx.confhttps://i.stack.imgur.com/I3Y4N.png
  • meu php5-fpm.conf é o padrão, exceto pm.max_children = 30 de pm.max_children = 10.
  • minha configuração do php5 é padrão, apenas as edições são relacionadas ao sendmail/postfix
  • ulimit -n mostra 1024

O que ajuda - O único alívio que tive com isso foi mover um dos dois sites mais movimentados para seu próprio VPS. Obviamente eu adoraria ter todos os sites em um vps, pois o sistema possui recursos mais que suficientes. Estou atingindo o limite de arquivos abertos em algum lugar? Suspeito que possa ter algo a ver com algo relacionado ao php.

Bastante confiante de que este é um problema de configuração em algum lugar. Não tenho certeza do que poderia ser e passei 48 horas tentando pesquisar antes de postar esta pergunta.

Responder1

Atualizar para PHP >=5.3.4 deve ajudar, pois parece que você foi mordido por este bug:https://bugs.php.net/bug.php?id=53028

informação relacionada