'Rote' Threads loeschen?

Hallo zusammen,

ich habe festgestellt, dass manche Scripte, die normalerweise problemlos durchlaufen, manchmal aus mir unklaren Gruenden haengen bleiben, d.h. werden nicht zu Ende ausgefuehrt und blokieren den Thread, der dann Rot dargestellt wird. Nach 2 - 3 Wochen Laufzeit gibt es dann keine freien Threads mehr und IPS blokiert komplett. Der Dienst laesst sich dann auch nicht mehr neu starten, allein ein Systemneustart hilft.

Gibt es in 2.6 eine Moeglichkeit, entweder manuell, oder, noch besser, durch ein Script, die ‚kaputten‘ Threads zu beenden, um die o.g. Situation elegant zu vermeiden?

Viele Gruesse

Adrian

Hi Axbigo,

leider keine Möglichkeit, die Threads abzuschießen. Es eght wirklich nur mit IPS-Reboot. Aber aufpassen: die Settings wird beim IPS-beenden nicht geschrieben (weil IPS endlos auf die Beendigung der toten Threads wartet -> Folge: IPS muss abgeschossen werden).
Ich sehe daher zu, dass ich den IPS-Task kurz nach dem letzten automatischen Schreibvorgang der Settings abschieße.

Genau aus dem Grunde hab ich mir ein Monitoring gebaut, welches vor Death Threads warnt

Hi Raketenschnecke,

danke fuer die Antwort. Eine Frage habe ich noch:

Ich sehe daher zu, dass ich den IPS-Task kurz nach dem letzten automatischen Schreibvorgang der Settings abschieße.

wie ermittelst Du den Zeitpunkt, wo die settings weggeschrieben wurde?

Danke

Adrian

hochkomplexer Vorgang: das settings-File im Datei-Explorer beobachten :smiley:

Cool. Nichts geht ueber Handarbeit :smiley:

Und ich dachte, Du hast ein Monitoring-Tool, das den Vorgang ‚elektrisch‘ macht …

macht es ja auch, aber eben „nur“ Monitoring. In einem solchen fall ist es eh besser, „manuell“ Hand anzulegen

mein server startet einmal in der woche neu, vieleicht würde das auch dabei helfen.

Also das was Ihr hier zu dem Thema schreibt ist aber nur die Bekämpfung von Sympthomen, das ist Euch hoffentlich klar. Ich hatte das zum Glück noch nicht aber wenn das öffter bzw. regelmäßig vor kommt sollte das mal vom IPS Team angegangen werden z.B. mit einem Watchdog.

beim Aufmerksamen Lesen des Threads sollte sich diese Erkenntis von selbst ergeben. Das ist ein Thema, was nunmal nur vom SW-Hertseller angepackt werden kann (soweit ich weiß, gibts da schon Überlegungen). Was soll ein Watchdog hier bringen?

Einzige Lösung ist herauszufinden, welche Skripte sich aufhängen und warum dies passiert.

paresy

Damit könnte man zu lange Threads erkennen und ggf. abschießen. Soweit jedenfalls mein Verständniss von einem Watchdog. Siehe dazu auch http://de.wikipedia.org/wiki/Watchdog :wink:

aber exakt das ist auch nur Symptombekämpfung. Wie paresy schon schreibt: Ursache finden und beseitigen.

Klar aber immer noch besser als einen Dienst manuell abzuschießen oder gar den Rechner neu zu booten.

Rechner neu booten ist hier auch vollkommen unnötig, IPS Neustart reicht vollkommen. Wenn es aktuell nicht möglich ist, den PHP-Task mit Bordmitteln abzuschießen, bleibt wohl kaum was anderes übrig. + #10, +#12

Natuerlich ist die Ursache zu finden / beseitigen die 1. Wahl (in meinem Fall tippe ich auf Netzwerkprobleme, da die Threads beim verschicken von Mails bei gleichzeitigem massiven Serverbackup auf Amazon Glacier blokierten).

Leider ist das nicht immer rechtzeitig moeglich, ich verweise darauf, dass in meinem Verstaendnis IPS ueber Monate autark durchlaufen sollte und bei vielen anderern Problemen ansonsten sehr robust reagiert. Eine wie auch immer geartete ‚Selbstheilung‘ (in diesem Kontext = Entfernen der Symptome) bei gleichzeitiger Alarmierung ueber das aufgetretene Problem waere sicherlich gut.

Wie dem auch sei: ich habe jetzt erstmal diese Alarmierung selbst programmiert und die vermeintliche Ursache beseitigt. Mal schau’n :).

Viele Gruesse

Adrian

Ein großer Dank und zwei kleine Fragen dazu:

  1. Hab heute eine Warnung per Mail bekommen, aber das Meldungsfenster im WF zeigt (jetzt) „0“. Ist der Thread auferstanden? Wird die Meldung dann gelöscht? Der IPS-Logger hat keinen Eintrag.
  2. „Queue Load“ ist bei mir Null, es steht daher nur „%“ auf grünem Grund. Hinter „PHP Death Threads“ ist aber ein ca. 1 mm hoher grüner Streifen zu sehen. Ist wahrscheinlich auch normal, aber hast Du dafür eine Erklärung?

Grüße
galleto

Hi Galleto,
das ist „normal“, es kann hin und wieder vorkommen, dass Scripte (weitaus) länger als die eingestellte max- Laufzeit brauchen. Die Scripte werden nicht nach Zustand rot gekennzeichnet, sondern nach Alter (Überschreiten der max- Laufzeit). Das heisst also, dass sie noch lange nicht tot sein müssen. Deshalb hab ich die Karenzzeit auf 10 oder 15 Minuten gestellt. Selbst dann kommen hin und wieder Warnungen (bei mir alle 2 Tage mal).
Solange Du danach wieder alles auf Grün hast, ist alles ok.

Okay, danke für die Auskunft. Kannst Du bitte zu 2. (s.o.) noch was sagen?
threads.JPG

Grüße
galleto

Ist bei mir leider auch so.

Hi Horst und galleto
(galleto: sorry, ich habe deinen letzten Post übersehen),

das scheint mir ein IPS-Bug zu sein - ich hab mir eben einen Wolf mit dem Projekt installiert: der Fehler tritt immer bei einer Neu-Installation auf. Ich dachte, das liegt an einem fehlerhaften Profil, scheint aber nicht so.

Ich könnt das Problem beheben, in dem ihr bei den besagten Variablen in die Variableneigenschaften geht, dann „Verändern“, anschließend „Profil speichern“ -> nun sollten die Variablen korrekt im WFE dargestellt werden.