Error intermitente 404 durante cargas más altas. (nginx/php/apc/mysql)

Error intermitente 404 durante cargas más altas. (nginx/php/apc/mysql)

Tengo un VPS de 4 núcleos de CPU con 4 GB de RAM. Ejecuta Ubuntu 10.04 con nginx/0.7.65, PHP 5.3.2 y MySQL. Utilizo php5-fpm para la comunicación con nginx. También tengo php5-apc que se complementa con el almacenamiento en caché de php.

Este sistema ejecuta cuatro sitios y muestra aproximadamente 2,5 millones de páginas vistas por día.

Introducción al problema: los sitios mostrarán de forma intermitente el error 404 al cargar una página. Potencialmente sucede en cada página, y puedo sentarme allí y actualizar una y otra vez y sucederá en promedio una de cada siete a diez veces.

Lo que probé: actualizar Ubuntu y nginx, jugar con configuraciones de php y nginx. Este problema se ha replicado en Ubuntu 11.10 y nginx/1.0.5.

Registros notables: Nginx error.log y access.log no muestran nada fuera de lo común, pero informan cuando se emite un 404. Se muestra php5-fpm.log:
Nov 20 21:47:45.640003 [ERROR] [pool www] unable to retrieve process activity of one or more child(ren). Will try again later.
pero no estoy convencido de que esté relacionado con este problema, como lo he visto en configuraciones anteriores.

Configuraciones (enlaces a imágenes para ahorrar espacio) - * Configuración de APC, tenga en cuenta Fragmentación: 0% y el recuento completo de caché es 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/*;
}
  • configuración típica del sitio incluida en nginx.confhttps://i.stack.imgur.com/I3Y4N.png
  • mi php5-fpm.conf es el predeterminado, excepto pm.max_children = 30 de pm.max_children = 10.
  • mi configuración de php5 es predeterminada, sólo las ediciones están relacionadas con sendmail/postfix
  • ulimit -n muestra 1024

Lo que ayuda: el único alivio que he tenido es trasladar uno de los dos sitios más ocupados a su propio VPS. Obviamente me encantaría tener todos los sitios en un vps, ya que el sistema tiene recursos más que suficientes. ¿Estoy alcanzando el límite de archivos abiertos en alguna parte? Sospecho que puede tener algo que ver con algo relacionado con php.

Estoy bastante seguro de que se trata de un problema de configuración en alguna parte. Sin embargo, no estoy seguro de qué podría ser y pasé 48 horas intentando investigar antes de publicar esta pregunta.

Respuesta1

Actualizar a PHP >=5.3.4 debería ayudar, ya que parece que te ha picado este error:https://bugs.php.net/bug.php?id=53028

información relacionada