WCF Dienst zeitweise extrem langsam

  • C#
  • .NET (FX) 4.5–4.8

    WCF Dienst zeitweise extrem langsam

    Hallo zusammen,
    wir haben ein Problem mit unserem WCF Dienst. In der Regel ist alles sehr schnell und die meisten Anfragen werden in wenigen ms abgearbeitet. Manchmal tritt es aber auf, dass Anfragen, welche normalerweise max. 100ms brauchen an die 5 - 10 Sekunden benötigen.

    Wir haben zwei Server und auf beiden Servern läuft der gleiche Dienst. In dem Dienst gibt es eine Health-Check Methode, welche von unserer Firewall kontinuierlich aufgerufen wird. Damit überprüfen wir ob der Dienst auch wirklich läuft. Sollte es 3 Mal zu einem Fehlerfall kommen schaltet die Firewall auf den zweiten Server um.
    Die Health-Check Methode an sich macht eigentlich gar nichts. Sie returnt einfach nur, solange die Firewall eine Antwort bekommt ist für uns alles in Ordnung.
    Jetzt kommt es aber leider öfters mal vor, dass die Firewall umschaltet, da der Server zu lange brauch um auf die Health-Checks zu antworten.

    Unsere erste Vermutung war, dass wir irgendwelche Limits von WCF erreichen und der Dienst daher erstmal keine Anfragen mehr zulässt. Laut Doku liegt das Limit aber bei 16 * Anzahl der Prozessoren. Wir verwenden zwei CPUs mit sechs Kernen, was also 12 Kernen entspricht. Mit Hyper-Threading sogar 24. Wir können zu 100% ausschließen, dass dieses Limit erreicht wird.

    Ausserdem tritt das Problem teilweise sogar nachts auf, wenn niemand mit dem Dienst arbeitet.

    Der Server an sich ist in dieser Zeit eigentlich auch nicht wirklich ausgelastet. Der hängt irgendwo zwischen 5 - 10% CPU Auslastung, daran kann es eigentlich auch nicht liegen. ConcurrencyMode steht natürlich auf Multiple. Es können auch problemlos mehrere Personen gleichzeitig mit dem Dienst arbeiten. Nur ab und zu ist er wie gesagt relativ langsam. Das dauert dann ein paar Sekunden und danach ist wieder alles gut.

    Momentan läuft der Dienst unter Windows 10 Pro. Gibt es dort vielleicht irgendwelche Einschränkungen, welche eine Windows Server Version zum Beispiel nicht hätte?