J'ai un serveur virtuel à 4 cœurs de processeur avec 4 Go de mémoire vive. Il fonctionne sous Ubuntu 10.04 avec nginx/0.7.65, PHP 5.3.2 et MySQL. J'utilise php5-fpm pour la communication avec nginx. J'ai aussi php5-apc pour compléter le cache de php.
Ce système gère quatre sites et affiche environ 2,5 millions de pages vues par jour.
Introduction au problème - Les sites affichent par intermittence l'erreur 404 lors du chargement d'une page. Cela se produit potentiellement sur chaque page, et je peux m'asseoir là et rafraîchir encore et encore et cela se produira en moyenne une fois toutes les sept à dix fois.
Ce que j'ai essayé - Mettre à jour Ubuntu et nginx, jouer avec les configurations de php et nginx. Ce problème a été reproduit sur Ubuntu 11.10 et nginx/1.0.5.
Journaux remarquables - Nginx error.log et access.log ne montrent rien d'extraordinaire, mais signalent l'émission d'un 404. php5-fpm.log affiche :Nov 20 21:47:45.640003 [ERROR] [pool www] unable to retrieve process activity of one or more child(ren). Will try again later.
mais je ne suis pas convaincu que cela soit lié à ce problème, car je l'ai déjà vu dans des configurations précédentes.
Configurations (liens vers des images pour économiser de l'espace) - * Paramètres APC, notez Fragmentation : 0% et le nombre de caches pleins est de 0. http://i.imgur.com/fV8hU.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/*;
}
- configuration typique du site incluse dans nginx.conf http://i.imgur.com/9Vmhj.png
- mon php5-fpm.conf est par défaut, sauf pm.max_children = 30 de pm.max_children = 10.
- ma configuration php5 est par défaut, les seules modifications sont liées à sendmail/postfix
- ulimit -n montre 1024
Ce qui aide - Le seul soulagement que j'ai eu à ce sujet est de déplacer l'un des deux sites les plus occupés vers son propre VPS. Évidemment, j'aimerais avoir tous les sites sur un seul VPS, car le système a plus que des ressources suffisantes. Est-ce que je me heurte à une limite de fichiers ouverts quelque part ? Je soupçonne que cela peut avoir quelque chose à voir avec quelque chose lié à php.
Je suis convaincu que c'est un problème de configuration quelque part. Je ne suis pas sûr de ce que cela peut être, et j'ai passé 48 heures à essayer de faire des recherches avant de poster cette question.