Jump to content
Froxlor Forum
  • 0

php-fpm crasht regelmäßig


kutte128

Question

Mahlzeit!

Ich habe seit ein paar Tagen das Problem, dass sich mein php bei einigen Sites regelmäßig verabschiedet.
Aktuell laufen 71 Webpages, davon werden ein paar gut besucht.

Ich habe sowohl php 5.6 als auch 7 am laufen.

Die Systemauslastung ist sehr niedrig. Es werden keine Fehler geloggt und auch per Stress-Test mit apache bench kann ich keine Probleme finden.
In der slowlog taucht auch nichts besonderes auf, auch scheint es keine Probleme mit libraries zu geben. Und es gibt mehr als genug Platz auf der HDD und auch unter /tmp

Ursprünglich hatte ich keine max-requests Limitierung, das klappte monatelang ohne Probleme. Jetzt sind noch ein paar kleinere Sites dazu gekommen, ab da stürzte mir php alle paar Stunden ab und blieb auch tot.
Ich habe die requests dann auf 500 gesetzt, damit lief er dann 3 Tage bis er wieder komplett hing. Mit 200 läuft er jetzt seit gestern, hing dann heute Nacht um ca 1:00 und ca 3:00. Allerdings nur für ein paar Sekunden und lief danach wieder bis kurz nach 10Uhr - auch nur ein paar Sekunden. Die betroffenen Sites werden Random gewählt. Mal ist es ein OpenCart oder Joomla unter php 5.6, mal ein Shopware unter php7, es können aber auch mehrere betroffen sein.

Durchschnittlich werden 25MB pro php Prozess verbraucht.

Meine aktuelle conf für php 5.6/php 7:

listen = /var/lib/apache2/fastcgi/USER-domain.de-php-fpm.socket
listen.owner = USER
listen.group = USER
listen.mode = 0660
user = USER
group = USER
pm = ondemand
pm.max_children = 30
pm.process_idle_timeout = 10
pm.max_requests = 200
emergency_restart_threshold = 3
emergency_restart_interval = 1m
process_control_timeout = 5s

System:

8 Kern Intel i7-3770, 16Gb Ram,
Gentoo,
apache 2.4.27, php 5.6.31,  php 7.0.22, mysql 5.6.36

Hat jemand eine Idee wo das Problem liegen oder wie ich es eingrenzen könnte?

Gruß,
kutte128

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

Guten Morgen,

hab mir das mal in der entsprechenden Zeit mal angeschaut, "leider" kein Crash.

Ich hatte auf static mit genau einen Child pro vhost.
Auf einem vhost bekam ich nach einer Weile einen bleibenden timeout:

DEBUG: pid 31535, fpm_pctl_perform_idle_server_maintenance(), line 362: [pool www] currently 0 active children, 0 spare children

Aber der Rest war weiterhin erreichbar.
Das selbe Problem hatte ich vorher bei einem gleichen Versuch bei einem anderen vhost, also auch hier random.
strace gab auch nichts auffälliges von sich, logs auch nicht. Load, Swap etc auch alles gut

Aufgefallen ist mir, dass ich häufiger beim ersten php-fpm restart eine "refused to stop" Meldung erhalte und dann natürlich der Dienst nicht startet. Das passiert wenn er einige Stunden lief.
Der Grund ist mir noch ein Rätsel genau wie warum er gerade immer in der Zeit von 2:40 - 3:15 crasht. Außer logrotate um 3:10h, in dem aber kein php mehr ist, passiert da nicht viel

Link to comment
Share on other sites

Ich glaube ich kann jetzt nachvollziehen was der Grund für die Crashes ist.
Ein Kunde nutzt eine Wordpress-Seite und wenn der reload/restart Befehl für den PHP-Prozess kommt und wp-cron läuft, wird das Child nicht gekillt und PHP startet nicht mehr.

Ich habe ein strace laufen lassen und manuell restarted. Der Prozess läuft unbeirrt weiter, php wirft sein

start-stop-daemon: 1 process refused to stop

aus und die Seiten sind nicht mehr aufrufbar.
Das kann ich jederzeit wiederholen (php5.6 und php7) wenn der wp-cron was längeres zu tun hat oder er diese strace Meldung ausgibt.

accept(0, 0x7fffd8a23f30, [112])        = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGQUIT {si_signo=SIGQUIT, si_code=SI_USER, si_pid=10658, si_uid=0} ---
rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)

Der Prozess lässt sich nur mit SIGKILL beenden.

Jemand eine Idee wo das Problem liegen kann?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...