PHP FPM Socket / LogFile

  • Hallo Zusammen,


    nutze ein aktuelles PD-Admin inkl. aktuelles SE Reihe 4. PHP wird mittels FPM ausgeführt, als Webserver dient der Apache 2.2.

    Nun tritt das Problem auf, dass von vielen vhosts einer nicht mehr via PHP erreichbar ist. Dieser läuft sonst Wochen stabil durch. Nach eingehender Recherche liegt es an PHP-FPM, im /service-Verzeichnis, also "/service/FPM-xxx" existiert auch kein socket mehr, die jeweiligen FPM-Prozesse existieren noch. Es stapeln sich mehrere MySQL-Sleep-Prozesse des jeweiligen vhosts. Erst ein stoppen/starten via svc -du /service/FPM-xxx löst das Problem! Alle anderen vhosts laufen problemlos weiter, auch der Server hat genügend Ressourcen. Im Log (auch im Debug-Modus des Apache) ist keinerlei Hinweis zu finden.

    Hat jemand dasselbe Problem einmal gehabt bzw. ähnliche Probleme? Wie kann ich Logfiles für FPM generieren, um dem Problem hier auf die schliche zu kommen? Wäre für Hilfe sehr dankbar!

    Einmal editiert, zuletzt von tobiw () aus folgendem Grund: Nachtrag: Nachdem ich soeben den einen Übeltäter neu gestartet habe, sind 3 andere vhosts danach ausgestiegen... Auch hier war im besagtem FPM-Verzeichnis kein socket-FIle mehr zu finden und das jeweilige Web nicht mehr aufrufbar! Auch hier leider keine Logs. Kann es auch an Limit-Werten des Betriebssystems liegen?

  • Zitat von tobiw

    nutze ein aktuelles PD-Admin inkl. aktuelles SE Reihe 4. PHP wird mittels FPM ausgeführt, als Webserver dient der Apache 2.2.

    Dies habe ich schon öfters beobachte, daher einmal der Hinweis: Die genaue Angabe der PDA und SE Version ist wichtig. Manchmal kann ein Fehler nur in einer bestimmten Version auftreten. Hat jemand in einem Jahr ein ähnliches/gleiches Problem wäre die aktuelle Version bereits eine andere. Auch die Angabe der PHP Version ist in diesem Fall eine wichtige Angabe.

    Zitat von tobiw

    Es stapeln sich mehrere MySQL-Sleep-Prozesse des jeweiligen vhosts.

    Vermutlich sind dies Sleep Prozesse mit Info 'NULL'. Dann sind dies meist noch offene Verbindungen zum MySQL Dienst. Wenn z.B. eine PHP Anwendung abgebrochen wird und die Verbindung nicht schließt, kann so etwas zustande kommen - zunächst also nichts ungewöhnliches.

    Zitat von tobiw

    Nachdem ich soeben den einen Übeltäter neu gestartet habe, sind 3 andere vhosts danach ausgestiegen... Auch hier war im besagtem FPM-Verzeichnis kein socket-FIle mehr zu finden und das jeweilige Web nicht mehr aufrufbar! Auch hier leider keine Logs. Kann es auch an Limit-Werten des Betriebssystems liegen?

    Leider kann ich erst einmal nur raten. Stehen noch ausreichend Inodes zur Verfügung? Dies kann man mit 'df -i' sehen.

  • Die Versionen sind PDA 4.58 mit der SE 4-0.320. Aktuell wird die aktuellste PHP 5.6 Version genutzt, in diesem Fall die 5.6.38.

    Um die MySQL-Sleep-Prozesse mache ich mir auch keine Sorgen, denke das sind die Auswirkungen, dass die FPM-Prozesse wegbrechen. Inodes sind noch ca. 10 Mio. frei, sollte hier auch kein Problem sein...

  • Tritt das Verhalten nur mit PHP 5.6.38 auf oder auch bei anderen PHP Versionen? Also < 5.6.38 oder 7.x?


    Und unter /usr/local/pd-admin2/logs/error_log ist nichts zu sehen? Bzw. unter /home/errorlogs/ wenn das eigene Error Log aktiviert wurde.


    Edit: sehe gerade, dass PHP-FPM Meldungen bei mir in /var/log/messages geloggt werden. Also dort einmal nach schauen.

  • Hab was in der messages gefunden. Wohl vorher übersehen:

    php-fpm[847]: [WARNING] [pool xxxxx] server reached pm.max_children setting (50), consider raising it.

    Er scheint an das FPM Limit erreicht zu haben (und terminiert leider den socket dadurch). Kann ich das Limit erhöhen, kann dazu keine Konfiguration finden!

  • Hab was gefunden! Die Variable "pm.max_children" wird wohl aus dem Angebotsplan mit der Einstellung "Limit Number Of Processes /2" gesetzt, heißt bei der Einstellung 100 wird die Variable auf 50 gesetzt! Aber warum wird der socket beendet und das Web dadurch offline?