Auf der Arbeit hatte ich mit folgendem Problem zu kämpfen: Ich sollte einen Windows 7 Anlagenrechner an unser Fertigungsmanagementsystems anbinden welches XML-Dateien abholt, verarbeitet und ggf. Antwort-Dateien zurücksendet (darf weiter produziert werden oder nicht). Dieses System prüft etwa jede Sekunde den freigegebenen Ordner ob neue Daten vorhanden sind und holt diese entsprechend ab (was normalerweise recht schnell geht). Aber bei diesem Rechner dauerte es eine Ewigkeit bis die Daten abgeholt wurden was den normalen Produktionsablauf stark einbremste. Vorab: Windows 7 gab es noch nicht solange bei uns in der Firma.
Nun begann ich mit der Fehlersuche:
- Ich habe die Server-Logfiles von den Prozessen überprüft welche auf XP-Rechner zugreifen: Hier kam es auch weiterhin zu keinen Verzögerungen.
- Das Polling (zyklische Abfrage) der Freigabe zwischen Windows 7 und XP funktionierte schnell.
- Das Polling zwischen Windows 7 und Windows 7 dauerte auch recht lange.
Das brachte mich auf einige Hinweise im Netz das seit Windows Vista das Server-Message-Block-Protokoll 2.0 verwendet wird (s.a. TecChannel – Netzwerkprotokolle SMB 3 und SMB 2 im Detail) und auf die Vermutung dass dies die mögliche Ursache sein könnte.
Folgende Optionen hatte ich herausgefunden:
- Das SMB-Protokoll abschalten, erklärt unter Microsoft – Aktivieren oder Deaktivieren von SMBv1, SMBv2 und SMBv3…. Dies wird nicht empfohlen, da es gerade in einer größeren Firma bzw. einer Client-/ Serverumgebung zu erheblichen Funktionseinschränkungen kommen kann.
- Wie auf social.technet.microsoft.com beschrieben folgende Registry-Werte auf dem Server erstellen / ändern:
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
- DirectoryCacheLifetime = 0
- FileNotFoundCacheLifetime = 0
- FileInfoCacheLifetime = 0
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
Punkt 2 haben wir umgesetzt und läuft seit etwa einem halben Jahr ohne Probleme.