Bessere Debugmöglichkeit für PHP Threads Übersicht

Hallo zusammen

Hatte kürzlich (aus eigenem verschulden) einige Probleme zu vielen zugleich gestarteten PHP Threads.
Die Thread Übersicht ist zwar nice, zeigt aber im Grunde genommen nur einen Teil der Wahrheit. Die Anzeige erfolgt ja nicht in Echtzeit sondern ist durch die Latenz der Konsole limitiert. Von da her kann sie ja nur einen groben Hinweis der Systemauslastung geben, aber nicht mehr.
Um in diesem Bereich zu debuggen wäre es ggfl. hilfreich wenn man Trigger setzen könnte welche dann ein Abbild der aktuell laufenden Threadübersicht einfriert. Oder meinetwegen auch in ein File logged falls das leichter ist.
Hilfreiche Trigger wären zb:

  • Triggere wenn mehr als x Threads aktiv
  • Triggere wenn ein bestimmetes Script aktiv + Zeitverzögerung um die von diesem Script ausgelösten Threads zu sehen
  • Triggere wenn ein Thread länger als x Sekunden aktiv
  • euch Profis fallen sicher noch weiter hilfreiche Metriken ein um zb. diese Dinger zu debuggen:

    Schön zu wissen das es eine abnormale Verzögerungen gab, aber ohne weitere Info ist das wenig hilfreich.

könnt ihr da mal was machen ?
Bernhard

Vielleicht ist der Integrity Check etwas für dich.

Wie meinst du das ? Der Integrity Check kann mir doch keine Snapshots laufender PHP Threds liefern. Oder hab ich da was übersehen ?

bb

Kennst du den Vortrag schon? https://www.youtube.com/watch?v=KqABVkkdhJ0&ab_channel=symcon

Damit kannst du sehr sehr viel Monitoring betreiben. Und auch das Intervall setzen wie schnell du ein Bild vom System haben willst.

paresy

Also ich finde die gar nicht abnormal… Sind ja auch nur Debug Ausgaben und keine Fehler/Warnungen.
Michael

Bei diesem Punkt hilft er mir und zeigt mir hängende Threads.

@paresy: Danke, kenne natürlich die Spezialschalter, werde mir das Video aber mal ansehen. ggfl. ist ja das dabei was dabei das ich suche.

@Nall-Chan: Ja freilich sind das soweit nur „unkritische“ Debugausgaben. Sie sind aber wichtig, weil sie zeigen das es unerwartete Verzögerungen im System gibt. Nun gilt es rauszufinden woher die Verzögerungen kommen.

btw. Dein Plugwise Modul ist bspw. so ein Kandidat. Zeitweise ist die Threadansicht komplett voll davon. Da es aber nur für 1-2 Sekunden aufblitzt ist es viel zu kurz um zu lesen was das alles vor sich geht.
Genau da würde eine Art Snapshot ansetzen um das Systemverhalten besser zu verstehen.

@bumaas: Mit hängenden Threads hab ich zum Glück nie Probleme, dahingehend ist alles sauber. Es geht mehr in die Richtung wie ich es am Beispiel vom Plugwise Modul beschrieben habe. Die Konsole zeigt mir an das zweitweise die Threads knapp werden.
Da es aber so schnell geht kann man nicht lesen WAS da alles zugleich läuft.

greeze
bb

Ja, weil das die Wartezeit beim Datenaustausch ist. Da ist das Timeout (idr bei allen üblichen Modulen) 5 Sekunden.

Und gerade weil das nur Debugausgaben sind, würde ich die im Log einfach ausschalten und Ende.
Kritische Themen loggt Symcon ja. Da dort setzt ja auch der Integrity Check an.

Nicht wirklich… Weil die Warteschlange welche Symcon intern vorhält nicht angezeigt wird. Erst wenn du entsprechende Meldungen im Log hast, dann sind die Threads zu knapp.
Michael