Zeitweise auftretender Fehler 404 bei höherer Belastung. (nginx/php/apc/mysql)

Zeitweise auftretender Fehler 404 bei höherer Belastung. (nginx/php/apc/mysql)

Ich habe einen VPS mit 4 CPU-Kernen und 4 GB RAM. Darauf läuft Ubuntu 10.04 mit nginx/0.7.65, PHP 5.3.2 und MySQL. Ich verwende php5-fpm für die Kommunikation mit nginx. Außerdem habe ich php5-apc als Ergänzung mit PHP-Caching.

Dieses System betreibt vier Sites und zeigt ungefähr 2,5 Millionen Seitenaufrufe pro Tag.

Einführung in das Problem - Beim Laden einer Seite zeigen die Websites zeitweise den Fehler 404 an. Dies kann auf jeder Seite passieren, und ich kann immer wieder dort sitzen und aktualisieren, und es passiert im Durchschnitt einmal bei sieben bis zehn Malen.

Was ich versucht habe: Ubuntu und Nginx aktualisieren, mit PHP- und Nginx-Konfigurationen spielen. Dieses Problem wurde auf Ubuntu 11.10 und Nginx/1.0.5 reproduziert.

Bemerkenswerte Protokolle – Nginx error.log und access.log zeigen nichts Ungewöhnliches, melden aber, wenn ein 404-Fehler ausgegeben wird. php5-fpm.log zeigt an:
Nov 20 21:47:45.640003 [ERROR] [pool www] unable to retrieve process activity of one or more child(ren). Will try again later.
aber ich bin nicht überzeugt, dass das mit diesem Problem zusammenhängt, da ich es in früheren Setups gesehen habe.

Konfigurationen (Links zu Bildern, um Platz zu sparen) – * APC-Einstellungen, beachten Sie Fragmentierung: 0 % und Cache-Vollzahl ist 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/*;
}
  • typische Site-Konfiguration in nginx.conf enthaltenhttps://i.stack.imgur.com/I3Y4N.png
  • meine php5-fpm.conf ist Standard, außer pm.max_children = 30 von pm.max_children = 10.
  • meine php5-Konfiguration ist Standard, nur Änderungen beziehen sich auf sendmail/postfix
  • ulimit -n zeigt 1024

Was hilft – Die einzige Erleichterung, die ich hatte, war, eine der beiden aktiveren Websites auf einen eigenen VPS zu verschieben. Natürlich hätte ich gerne alle Websites auf einem VPS, da das System über mehr als genug Ressourcen verfügt. Erreiche ich irgendwo das Limit für offene Dateien? Ich vermute, dass es etwas mit PHP zu tun haben könnte.

Ich bin ziemlich sicher, dass es sich hier um ein Konfigurationsproblem handelt. Ich bin mir jedoch nicht sicher, was es sein könnte, und habe 48 Stunden mit Nachforschungen verbracht, bevor ich diese Frage gestellt habe.

Antwort1

Ein Upgrade auf PHP >=5.3.4 sollte helfen, da Sie anscheinend von diesem Fehler betroffen sind:https://bugs.php.net/bug.php?id=53028

verwandte Informationen