Threading oder kein Threading, das ist hier die Frage :-)

20/09/2009 - 19:41 von Sven Thierfelder | Report spam
Hi Leute,

ich stelle mir grad so die Frage, wie ich ein kleines
Serverüberwachungstool am besten löse.
Das Tool hat derzeit 2 Funktionen. Anhand der Konfiguration pingt es den
Rechner an oder schickt eine HTML-Anfrage um den Webserver zu testen.
Spàter soll es vielleicht auch noch Mail etc. überwachen können ... ist
aber erstmal völlig nebensàchlich.
Mein derzeitiger Ansatz sieht so aus, dass per Timer die Liste abgearbeitet
wird und da der Status rot oder grün ist. Wenn es nun mal ein Problem gibt,
und die Abfragen in einen Timeout laufen müssen, bleibt das Programm immer
stehen. Gut, jetzt könnte man sagen, lass doch die Abfrage in einem eigenen
Thread laufen. OK dann würde zwar das Programm nicht blockiert, doch der
nàchste Server würde noch immer erst getestet wenn der erste Thread beendet
wurde.
Würde es denn Sinn machen für jede Abfrage eine Thread anzulegen und alle
Abfragen gleichzeitig laufen zu lassen? Ich meine wenn dass dann 20 - 30
Threads sind bringt das doch auch nichts mehr ...

Oder gibt es da noch ganz andere Ansàtze??

Gruß Sven
 

Lesen sie die antworten

#1 Armin Zingler
20/09/2009 - 23:02 | Warnen spam
Sven Thierfelder schrieb:
Hi Leute,

ich stelle mir grad so die Frage, wie ich ein kleines
Serverüberwachungstool am besten löse.
Das Tool hat derzeit 2 Funktionen. Anhand der Konfiguration pingt es den
Rechner an oder schickt eine HTML-Anfrage um den Webserver zu testen.
Spàter soll es vielleicht auch noch Mail etc. überwachen können ... ist
aber erstmal völlig nebensàchlich.
Mein derzeitiger Ansatz sieht so aus, dass per Timer die Liste abgearbeitet
wird und da der Status rot oder grün ist. Wenn es nun mal ein Problem gibt,
und die Abfragen in einen Timeout laufen müssen, bleibt das Programm immer
stehen. Gut, jetzt könnte man sagen, lass doch die Abfrage in einem eigenen
Thread laufen. OK dann würde zwar das Programm nicht blockiert, doch der
nàchste Server würde noch immer erst getestet wenn der erste Thread beendet
wurde.



Wenn du mehrere Threads startest, dann laufen sie parallel und nicht
erst, wenn einer beendet wurde.

Würde es denn Sinn machen für jede Abfrage eine Thread anzulegen und alle
Abfragen gleichzeitig laufen zu lassen? Ich meine wenn dass dann 20 - 30
Threads sind bringt das doch auch nichts mehr ...



Warum bringt das nichts mehr? Wenn die Threads meistens nur warten, dann
ist das kein Problem. Es gilt ja nicht, Prozessorlast auf mehrere Kerne
zu verteilen.

Oder gibt es da noch ganz andere Ansàtze??



Um mehrere Threads wirst du nicht herumkommen. Wenn du PingAsync bzw
WebClient.*Async verwendest, dann musst du die Threads nicht selbst
implementieren.


Armin

Ähnliche fragen