none
Multiple TCP Verbindungen in einem Windows-Service. RRS feed

  • Frage

  • Hallo,

    In meinem Windows-Serivce laufen teilweise eine hohe Anzahl von Threads die alle mit jeweils einem anderen Ziel über TCP/IP kommunizieren.

    Ich habe manchmal das Problem das einzelne Tasks sich nicht zu ihren TCP Ziel verbinden können nachdem es eine lange Zeit gelaufen ist. Es kann Tage oder auch Wochen dauern bis es zu diesen Aussetzern kommt, bei einigen Installationen passiert das auch nie. Ein Leak möchte ich hier mal ausschließen.

    Als Fehler kommt:  Verbindungsversuch fehlgeschlagen.  (Obwohl ziel erreichbar ist) Wenn es einmal fälschlicherweise nicht geht, funktioniert es nie wieder.

    Ein PING ist jedoch ohne Probleme möglich.

    Ein Restart vom Service behebt den Fehler immer.
    Jemand eine Idee was ich programatisch machen könnte was es zu solch ein Problem kommt.

    cu

    k.o.

     

     

     

     

     

    Montag, 16. Juli 2018 14:20

Antworten

  • Hi K.,
    das Problem kenne ich. Es kann aber leider sehr viele verschiedene Ursachen haben. Als Gemeinsamkeit hat sich bei mir herausgestellt, dass es einen Absturz in einem Thread gab und danach interne Komponenten "gehangen" haben. Da hilft wirklich nur extensive Protokollierung in allen Catch-Blöcken, die die Threads vollständig überwachen. Wenn da ein Programmzweig, der in einem Thread abgearbeitet wird, nicht in try-catch eingeschlossen wird, kann es unmöglich werden, der Ursache auf den Grund zu gehen. In diese Überwachung sollten auch Tine-Outs eingeschlossen werden, da diese meist die Ursache bei mir waren.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Montag, 16. Juli 2018 16:04
  • Hi Kai,
    da Time-Outs sehr unterschiedlich auftreten können, solltest Du eine Liste mit allen denkbaren Situationen und Zuständen erstellen, bei denen Time-Outs auftreten können, und dazu die Behandlung festlegen. Das ist dann zu implementieren und möglichst mittels Schalter zu protokollieren. Später nach erfolgreichen Tests kannst Du mit dem Schalter die Protokollierung unterdrücken.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks



    Dienstag, 17. Juli 2018 10:15

Alle Antworten

  • Hi K.,
    das Problem kenne ich. Es kann aber leider sehr viele verschiedene Ursachen haben. Als Gemeinsamkeit hat sich bei mir herausgestellt, dass es einen Absturz in einem Thread gab und danach interne Komponenten "gehangen" haben. Da hilft wirklich nur extensive Protokollierung in allen Catch-Blöcken, die die Threads vollständig überwachen. Wenn da ein Programmzweig, der in einem Thread abgearbeitet wird, nicht in try-catch eingeschlossen wird, kann es unmöglich werden, der Ursache auf den Grund zu gehen. In diese Überwachung sollten auch Tine-Outs eingeschlossen werden, da diese meist die Ursache bei mir waren.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Montag, 16. Juli 2018 16:04
  • Hey Peter,

    Time-Outs sind ja leider unvermeidbar, mir kann immer jemand die Gegenstelle abschalten. :-(

    Was hast du dagegen gemacht ? Explizites löschen / Disposen  der Objekte !?!

    cu

    kai

    Dienstag, 17. Juli 2018 09:52
  • Hi Kai,
    da Time-Outs sehr unterschiedlich auftreten können, solltest Du eine Liste mit allen denkbaren Situationen und Zuständen erstellen, bei denen Time-Outs auftreten können, und dazu die Behandlung festlegen. Das ist dann zu implementieren und möglichst mittels Schalter zu protokollieren. Später nach erfolgreichen Tests kannst Du mit dem Schalter die Protokollierung unterdrücken.

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks



    Dienstag, 17. Juli 2018 10:15