PHP FPM bleibt hängen

7

Ich habe alle möglichen Optionen ausprobiert, aber alle paar Tage (meistens jeden Tag) stellt FPM die Seitenbereitstellung ein und ich erhalte eine 502 (vom Cherokee-Webserver).

Die Protokolle sind mit Folgendem gefüllt:

[15-Sep-2014 10:17:46] WARNING: [pool www] child 10135 exited on signal 11 (SIGSEGV - core dumped) after 15.512406 seconds from start
[15-Sep-2014 10:17:46] NOTICE: [pool www] child 10138 started
[15-Sep-2014 10:18:02] WARNING: [pool www] child 10138 exited on signal 11 (SIGSEGV - core dumped) after 15.657950 seconds from start
[15-Sep-2014 10:18:02] NOTICE: [pool www] child 10166 started
[15-Sep-2014 10:18:20] WARNING: [pool www] child 10212 exited on signal 11 (SIGSEGV - core dumped) after 10.192596 seconds from start
[15-Sep-2014 10:18:20] NOTICE: [pool www] child 10214 started
[15-Sep-2014 10:19:08] WARNING: [pool www] child 10216 exited on signal 11 (SIGSEGV - core dumped) after 42.754452 seconds from start
[15-Sep-2014 10:19:08] NOTICE: [pool www] child 10242 started
[15-Sep-2014 10:20:22] WARNING: [pool www] child 10332 exited on signal 11 (SIGSEGV - core dumped) after 14.862183 seconds from start
[15-Sep-2014 10:20:22] NOTICE: [pool www] child 10494 started
[15-Sep-2014 10:20:48] WARNING: [pool www] child 10494 exited on signal 11 (SIGSEGV - core dumped) after 26.415409 seconds from start
[15-Sep-2014 10:20:48] NOTICE: [pool www] child 10498 started
[15-Sep-2014 10:32:48] WARNING: [pool www] child 11718 exited on signal 11 (SIGSEGV - core dumped) after 21.319360 seconds from start
[15-Sep-2014 10:32:48] NOTICE: [pool www] child 11720 started

Und jedes Mal, wenn dies passiert, ähnelt das letzte Protokoll

[15-Sep-2014 11:01:34] WARNING: [pool www] server reached max_children setting (50), consider raising it

Dies ist die Verbindung nach Cherokee zur gleichen Zeit, es ist nicht einmal eine Spitze ... Geben Sie hier die Bildbeschreibung ein

Ich habe versucht, dynamisch, auf Abruf behoben und nichts ändert sich. egal welche max_children ich setze es stirbt irgendwann.

Warum es sich nicht einfach erholen kann, weiß ich nicht, aber jetzt komme ich zu dem Punkt, entweder zu etwas anderem zu wechseln oder eine Crontab zu erstellen, die FPM alle 30 Minuten neu startet

Server

  • Rackspace 1. Generation 1024 MB RAM, 40 GB Festplatte
  • Ubuntu 12.04 LTS
  • Cherokee 1.2.103

PHP 5.3.10-1ubuntu3.11 mit Suhosin-Patch (cli) (erstellt: 4. April 2014, 01:30:04 Uhr) Copyright (c) 1997-2012 Die PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

Die Site erhält ungefähr 2k Seitenaufrufe pro Nacht, so dass es nicht einmal eine so große Last ist.

Die Speichernutzung liegt bei 300 -> 400 MB, der Swap ist leer, der Lastdurchschnitt liegt bei <~ 1,5

fpm config

[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
emergency_restart_threshold = 5
emergency_restart_interval = 1s
process.max = 75


include=/etc/php5/fpm/pool.d/*.conf

Poolkonfiguration

[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000

pm = ondemand
pm.max_children = 50
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.process_idle_timeout = 10s

pm.max_requests = 100
pm.status_path = /status

ping.path = /fpm/ping

chdir = /
dogmatisch69
quelle
Verwenden Sie APC? Wenn ja, loswerden.
Michael Hampton
Was ist das Problem mit APC?
dogmatisch69
Es ist seit vielen Jahren abgestürzt. Dies ist ein Grund, warum das Projekt es nicht mehr als Caching-Erweiterung empfiehlt.
Michael Hampton

Antworten:

2

Das Erhöhen der Anzahl der Server, das Ändern Ihrer Konfiguration oder Ihres Codes hilft nicht bei einem Segmentierungsfehler. Sogar im Jahr 2014 war 5.3.10 lange im Zahn und aufgrund eines Upgrades. Sie könnten die Core-Dumps mit gdb analysieren, aber niemand wird sehr daran interessiert sein, einen Fehler in einer alten Version von php: upgrade zu beheben.

Symcbean
quelle
1

Ich frage mich, ob Sie den folgenden Fehler treffen

https://bugs.php.net/bug.php?id=62205

Könnte versuchen, ein Upgrade von PHP

Mike
quelle
Ich habe PHP auf 5.5 aktualisiert und die Sache noch schlimmer gemacht, konnte kein PHP zum Rendern bringen. Irgendwann auf nginx + fpm umgestellt und es scheint vorerst zu funktionieren
dogmatic69