it-swarm.com.de

php-fpm Child-Prozess wurde mit Signal 11 beendet

Unsere Anwendung läuft auf Docker-Container unter AWS. Betriebssystem: Ubuntu 14.04.2 LTS Nginx-Version: nginx/1.4.6 (Ubuntu) Memcached-Version: Memcached 1.4.14 PHP-Version: PHP 5.5.9-1ubuntu4.11 (cli) (erstellt am 2. Juli 2015 um 15:23:08 Uhr) Systemspeicher: 7,5 GB

Wir erhalten leere Seiten und 404-Fehler seltener. Bei der Überprüfung der Protokolle wurde festgestellt, dass der php-child-Prozess beendet wird und der Arbeitsspeicher anscheinend hauptsächlich vom memcache- und php-fpm-Prozess und sehr wenig freiem Speicher belegt wird.

memcache ist für die Verwendung von 2 GB Speicher konfiguriert.

Hier ist php www.conf

pm = dynamic
pm.max_children = 30
pm.start_servers = 9
pm.min_spare_servers = 4
pm.max_spare_servers = 14
rlimit_files = 131072 
rlimit_core = unlimited

Fehlerprotokolle

/var/log/nginx/php5-fpm.log 
[29-Jul-2015 14:37:09] WARNING: [pool www] child 259 exited on signal 11 (SIGSEGV - core dumped) after 1339.412219 seconds from start

/var/log/nginx/error.log 

2015/07/29 14:37:09 [error] 141#0: *2810 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: x.x.x.x, server: _, request: "GET /suggestions/business?q=Selectfrom HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", Host: "example.com", referrer: "http://example.com/"

/var/log/nginx/php5-fpm.log  
[29-Jul-2015 14:37:09] NOTICE: [pool www] child 375 started


/var/log/nginx/php5-fpm.log:[29-Jul-2015 14:37:56] WARNING: [pool www] child 290 exited on signal 11 (SIGSEGV - core dumped) after 1078.606356 seconds from start

Core-Dump

Core was generated by php-fpm: pool www.Program terminated with signal SIGSEGV, Segmentation fault.#0  0x00007f41ccaea13a in memcached_io_readline(memcached_server_st*, char*, unsigned long, unsigned long&) () from /usr/lib/x86_64-linux-gnu/libmemcached.so.10

dmesg

[Wed Jul 29 14:26:15 2015] php5-fpm[12193]: segfault at 7f41c9e8e2da ip 00007f41ccaea13a sp 00007ffcc5730ce0 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]
[Wed Jul 29 14:28:26 2015] php5-fpm[12211]: segfault at 7f41c966b2da ip 00007f41ccaea13a sp 00007ffcc5730ce0 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]
[Wed Jul 29 14:29:16 2015] php5-fpm[12371]: segfault at 7f41c9e972da ip 00007f41ccaea13a sp 00007ffcc5730b70 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]
[Wed Jul 29 14:35:36 2015] php5-fpm[12469]: segfault at 7f41c96961e9 ip 00007f41ccaea13a sp 00007ffcc5730ce0 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]
[Wed Jul 29 14:35:43 2015] php5-fpm[12142]: segfault at 7f41c9e6c2bd ip 00007f41ccaea13a sp 00007ffcc5730b70 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]
[Wed Jul 29 14:37:07 2015] php5-fpm[11917]: segfault at 7f41c9dd22bd ip 00007f41ccaea13a sp 00007ffcc5730ce0 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]
[Wed Jul 29 14:37:54 2015] php5-fpm[12083]: segfault at 7f41c9db72bd ip 00007f41ccaea13a sp 00007ffcc5730ce0 error 4 in libmemcached.so.10.0.0[7f41ccad2000+32000]

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen

Danke im Voraus

9
jobycxa

Während Sie für dieses Problem googeln und sich bemühen, eine Lösung zu finden, die nicht bezogen auf Sitzungen war (weil ich das ausgeschlossen habe) noch to bad PHP Code (da ich mehrere Websites mit genau derselben Version von WordPress habe und keine Probleme haben ... außer einer), kam ich auf eine Antwort, die besagte, dass eine mögliche Lösung darin bestand, einige fehlerhafte Erweiterungen zu entfernen (normalerweise memcache/d, aber könnte etwas anderes sein).

Da diese Site auf einem Ubuntu-Server einwandfrei funktionierte, hatte ich beim Wechsel zu einem neueren Server sofort den Verdacht, dass die Migration von PHP 5.5 auf 7 das Problem verursacht hat. Es war nur seltsam, weil keine andere Website betroffen war. Dann fiel mir ein, dass eine andere Sache auf diesem neuen Server anders war: Ich hatte auch New Relic installiert. Dies ist sowohl eine Erweiterung als auch ein kleiner Server, der im Hintergrund ausgeführt wird und viele Analysedaten zur Verarbeitung an New Relic sendet. Angeblich ist es eine PHP 5 -Erweiterung, aber überraschenderweise lädt es auch gut auf PHP 7.

Jetzt kommt das knifflige Stückchen. Irgendwann hatte ich W3 Total Cache für die WordPress-Installation dieser bestimmten Website installiert. Anschließend stellte ich fest, dass die Leistung dieses Servers so herausragend war, dass W3TC nicht erforderlich war und sich einfach an eine viel einfachere Konfiguration hielt. So konnte ich W3TC deinstallieren. Das ist alles sehr schön, aber ... Ich habe vergessen, dass ich New Relic auch auf W3TC eingestellt hatte (angeblich fügt es zusätzliche Analysedaten hinzu, die an New Relic gesendet werden sollen). Bei der Deinstallation von W3TC war wahrscheinlich in der New Relic-Konfiguration in meinem Server noch 'etwas' vorhanden, der immer noch versuchte, Daten über die W3TC-Schnittstelle zu senden (vorausgesetzt, W3TC hat eine Schnittstelle ... Ich weiß wirklich nicht, wie das funktioniert level), und da dieses bestimmte Codebit fehlte, würde der php_fpm-Handler für diese Website manchmal ausfallen. Nicht alle die Zeit, da ich davon aus gehe, dass nginx in den meisten Fällen statische Seiten zurückschickte. Oder vielleicht php_fpm, eingestellt auf 'recycle' nach 100 Aufrufen oder so, stürzt das System ab. Was auch immer genau geschah, es hatte definitiv einen Bezug zu New Relic - sobald ich die New Relic-Erweiterung aus PHP entfernte, funktionierte diese Website wieder normal.

Da dies ein so spezifisches Szenario ist, schreibe ich dies nur als eine Antwort, in der fernen Möglichkeit, dass jemand in der Zukunft nach dem genauen Problem googelt.

16

Es kann vorkommen, dass php keine Sitzungsinformationen in die Datei Schreiben kann. Standardmäßig ist es /var/lib/php/session . Sie können dies ändern, indem Sie die Konfiguration session_save_path verwenden.

https://serverfault.com/questions/427596/phpmyadmin-having-problems-on-nginx-and-php-fpm-on-rhel-6/429445

2
zainengineer

Ich hatte dieses Problem nach der Installation von xdebug, dem Hinzufügen einiger Eigenschaften zu /etc/php/7.1/fpm/php.ini und dem Neustart von nginx. Dies läuft auf einer Homestead Laravel Box.

Durch einen Neustart des php7.1-fpm-Dienstes wurde das Problem für mich gelöst.

1
Gudlaugsson

In unserem Fall wurde es von Guzzle + New Relic verursacht. In New Relic Agent changelog wurde bereits erwähnt, dass es in Version 7.3 einige Guzzle-Korrekturen gab, aber selbst die Verwendung der 8.0 funktionierte nicht, so dass immer noch etwas nicht stimmt. In unserem Fall geschah dies nur in 2 unserer Scripts, die Guzzle verwendeten. Wir haben festgestellt, dass es zwei Lösungen gibt:

  1. Stellen Sie newrelic.guzzle.enabled = false in newrelic.ini ein. Sie verlieren auf diese Weise Daten in External Services tab, benötigen diese jedoch möglicherweise nicht.
  2. Downgrade New Relic Agent auf Version 6.x, das irgendwie auch funktioniert
  3. Wenn Sie dies lesen, wenn sie etwas neuere Version 8.0 veröffentlicht haben, können Sie auch versuchen, den neuen Relic-Agenten auf den neuesten Stand zu bringen, und möglicherweise wurde das Problem behoben
1
labm0nkey

In meinem Fall war es mit zend debug/xdebug verwandt. Es leitet einige TCP-Pakete an IDE (Phpstorm) weiter, das diesen Port nicht überwacht hat (das Debuggen war deaktiviert). Die Lösung besteht darin, diese Erweiterungen entweder zu deaktivieren oder das Debugging-Monitoring für den Debugging-Port zu aktivieren.

1
Abdullah

In meinem Fall wurde es durch New Relic PHP Agent verursacht. Deshalb habe ich für bestimmte Funktionen, die zum Absturz führen, diesen Code hinzugefügt, um New Relic zu deaktivieren

if (function_exists('newrelic_ignore_transaction')) {
    newrelic_ignore_transaction();
}

refer: https://discuss.newrelic.com/t/wie-nach-disable-a-specific-transaction-in-php-agent/42384/2

1
Irfan Kamil

In meinem Fall war es xdebug, nach der Deinstallation wurde es wieder normal.

0
Mr Coder

Weitere Informationen zu diesen Abstürzen finden Sie im Allgemeinen in Ihrem Syslog (/var/log/syslog unter Linux, /var/log/system.log unter Mac OS). 

Ich hatte Sep 14 11:16:26 bob ReportCrash[89504]: Saved crash report for php-fpm[13757] version 0 to /Users/bob/Library/Logs/DiagnosticReports/php-fpm_2017-09-14-111626_MacBob.crash in meinem Syslog, und die generierte Datei enthielt alles, um zu wissen, welche Erweiterung Probleme hatte.

0
Alain Tiemblo

in meinem Fall habe ich die Pufferfunktion ob_start("buffer"); in meinem Code deaktiviert;)

0
J. Doe