WSUS Bereinigung bricht nach 150s ab
Hallo,
ich habe die SQL 2019 SUSDB unseres WSUS bereits auf Timout=0 gestellt.
Im IIS des WSUS habe ich das Verbindungstimeout bereits auf 10800 Sekunden gestellt.
Die DB wird täglich mit dem hier verfügbaren T_SQL Script reindexiert: https://learn.microsoft.com/de-de/troubleshoot/mem/configmgr/update-mana ...
SQL Server und WSUS Server sind beides vmware VMs auf potenter Hardware und Flash Speicher.
Alles läuft soweit prima .... bis auf die Bereinigung der nicht verwendeten Update-Revisionen (erster Haken bei der Serverbreinigung)
Nach exakt 150 Sekunden kommt dieser Datenbankfehler und die Konsole ist weg.
Stellen Sie sicher, dass SQL Server auf dem WSUS-Server ausgeführt wird. Starten Sie SQL erneut, wenn das Problem weiterhin besteht.
System.Data.SqlClient.SqlException -- Das Ausführungstimeout ist abgelaufen. Der Timeoutzeitraum wurde überschritten, bevor der Vorgang beendet wurde, oder der Server antwortet nicht.
Der Vorgang wurde vom Benutzer abgebrochen.
Die Anweisung wurde beendet.
Source
.Net SqlClient Data Provider
Stack Trace:
bei System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
bei System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
bei Microsoft.UpdateServices.UI.SnapIn.Wizards.ServerCleanup.ServerCleanupWizard.OnCleanupComplete(Object sender, PerformCleanupCompletedEventArgs e)
Diese 150 Sekunden scheinen mir nicht willkürlich, sondern ein "irgendwo" verankerter Wert zu sein.
Da ich den DB Wert schon auf 0 und den IIS Wert auf 10800 habe ...
Wo finde ich die Möglichkeit den Timeout des Connection String des WSUS Bereinigungsassitenten zu bearbeiten und ggf. abzuschalten? Weiß das jemand?
(P.S. hatte erst 180s geschrieben, habe aber nochmal nachgemessen. Es sind jedes mal nur 2,5 Minuten nicht 3.)
ich habe die SQL 2019 SUSDB unseres WSUS bereits auf Timout=0 gestellt.
Im IIS des WSUS habe ich das Verbindungstimeout bereits auf 10800 Sekunden gestellt.
Die DB wird täglich mit dem hier verfügbaren T_SQL Script reindexiert: https://learn.microsoft.com/de-de/troubleshoot/mem/configmgr/update-mana ...
SQL Server und WSUS Server sind beides vmware VMs auf potenter Hardware und Flash Speicher.
Alles läuft soweit prima .... bis auf die Bereinigung der nicht verwendeten Update-Revisionen (erster Haken bei der Serverbreinigung)
Nach exakt 150 Sekunden kommt dieser Datenbankfehler und die Konsole ist weg.
Stellen Sie sicher, dass SQL Server auf dem WSUS-Server ausgeführt wird. Starten Sie SQL erneut, wenn das Problem weiterhin besteht.
System.Data.SqlClient.SqlException -- Das Ausführungstimeout ist abgelaufen. Der Timeoutzeitraum wurde überschritten, bevor der Vorgang beendet wurde, oder der Server antwortet nicht.
Der Vorgang wurde vom Benutzer abgebrochen.
Die Anweisung wurde beendet.
Source
.Net SqlClient Data Provider
Stack Trace:
bei System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
bei System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
bei Microsoft.UpdateServices.UI.SnapIn.Wizards.ServerCleanup.ServerCleanupWizard.OnCleanupComplete(Object sender, PerformCleanupCompletedEventArgs e)
Diese 150 Sekunden scheinen mir nicht willkürlich, sondern ein "irgendwo" verankerter Wert zu sein.
Da ich den DB Wert schon auf 0 und den IIS Wert auf 10800 habe ...
Wo finde ich die Möglichkeit den Timeout des Connection String des WSUS Bereinigungsassitenten zu bearbeiten und ggf. abzuschalten? Weiß das jemand?
(P.S. hatte erst 180s geschrieben, habe aber nochmal nachgemessen. Es sind jedes mal nur 2,5 Minuten nicht 3.)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42191442943
Url: https://administrator.de/contentid/42191442943
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
17 Kommentare
Neuester Kommentar
Zitat von @pcpanik:
Nein. Danke für Deine Antwort. Schaue ich mir morgen mal mit unserem DB Admin an.
Nein. Danke für Deine Antwort. Schaue ich mir morgen mal mit unserem DB Admin an.
Aus Erfahrung kann ich nur dazu raten, alle vorgeschlagenen zusätzlichen Indices auch zu erstellen. WSUS wird erheblich schneller.
Moin @pcpanik,
jup, das geht.
Mit dem folgenden Befehl, entfernst du den SQL-Abbfrage-Timeout.
(SQL)
Und der folgende, entfernt den Timeout für den IIS-AppPool.
(Power-Shell)
😉
Gruss Alex
Ich bin jetzt davon ausgegangen, dass der Bereinigunsprozess mit einer SQL-Abfrage mit einem festgelegtem Timeout startet. Und dass es möglich sein müsste, diesen zu verändern.
jup, das geht.
Mit dem folgenden Befehl, entfernst du den SQL-Abbfrage-Timeout.
(SQL)
USE SUSDB;
GO
EXEC sp_configure 'remote query timeout', 0 ;
GO
RECONFIGURE ;
GO
Und der folgende, entfernt den Timeout für den IIS-AppPool.
(Power-Shell)
Set-ItemProperty IIS:\AppPools\WsusPool -Name processModel.idleTimeout -Value "00:00:00"
😉
Gruss Alex
Moin @pcpanik,
um ehrlich zu sein nutzen wir die GUI des WSUS nicht wirklich gerne für die Bereinigung, weil die in den meisten Fällen nur Ärger macht und oder zu lange benötigt.
Hast du die Bereinigung schon mal nur über Power-Shell versucht?
https://learn.microsoft.com/en-us/powershell/module/updateservices/invok ...
Gruss Alex
Auch bei 0 bricht die Bereinigung nach 150s ab. Irgendwo muss dieser Wert anderweitig gesetzt sein.
um ehrlich zu sein nutzen wir die GUI des WSUS nicht wirklich gerne für die Bereinigung, weil die in den meisten Fällen nur Ärger macht und oder zu lange benötigt.
Hast du die Bereinigung schon mal nur über Power-Shell versucht?
https://learn.microsoft.com/en-us/powershell/module/updateservices/invok ...
Gruss Alex
Moin,
ich passe bei einem WSUS immer den Wert hier für den Timeout an. Dazu hatte ich mir mal folgendes aus irgend einem Forum kopiert:
Nach Anpassung jeglicher Werte ist ein Neustart des Servers das beste wie ich feststellen musst.
Ansonsten setze ich die Werte im WSUS-Pool immer wie folgt:
Das Re-Indexing reicht einmal im Monat. Läuft dein Wsus schon immer auf einem vollwertigen SQL Server, oder hast du Migriert? Bei einer Migration konnte ich bisher keine Performance gewinne feststellen. Von Anfang an ist sogar ein SQL-Express ein riesen Gewinn.
Gruß
Spirit
ich passe bei einem WSUS immer den Wert hier für den Timeout an. Dazu hatte ich mir mal folgendes aus irgend einem Forum kopiert:
Der Workaround
So eine richtige Lösung dafür gibt es nicht wirklich, aber einen gut funktionierenden Workaround. Ihr könnte das Ganze natürlich mit höher getakteten CPUs und noch mehr RAM zu erschlagen versuchen, Microsoft empfiehlt aber eine kostengünstigere Variante: Erhöht das ASP.NET Timeout für den WSUS-App-Pool. Dazu müsst ihr in der Datei „\Program Files\Update Services\WebServices\ClientWebService\Web.Config“ folgende Zeile finden:
<httpRuntime maxRequestLength="4096" />
1
<httpRuntime maxRequestLength="4096" />
Diese muss dann um den Parameter „ExecutionTimeout“ erweitert werden:
<httpRuntime maxRequestLength="4096" executionTimeout="3600" />
1
<httpRuntime maxRequestLength="4096" executionTimeout="3600" />
Jetzt noch ein „iisreset“, damit wird die Einstellung wirksam. Nun hat der Server 60 Minuten Zeit, mit dem Client über Updates zu verhandeln, statt wie zuvor knappe 2 Minuten. Das sollte reichen. Weiter optimieren lässt sich das Thema anhand dieses weiteren Technet Eintrags, wo folgende Einstellungen des WSUS-App-Pools (Advanced Settings im IIS Manager) empfohlen werden:
Nach Anpassung jeglicher Werte ist ein Neustart des Servers das beste wie ich feststellen musst.
Ansonsten setze ich die Werte im WSUS-Pool immer wie folgt:
Changed the Private Memory Limit (KB) to 0 – This actually removes the memory limit. I’d actually suggest making it slight less that the memory available on your server, but I’ve not had any issue from setting this to 0 yet.
Change the Service Unavailable Response from HttpLevel to TcpLevel – The documentation states that change this to TcpLevel will reset the connection rather than return a HTTP 503 error. I found this via a Google Search and haven’t had any issues since making this change.
Change Limit Interval (minutes) from 5 to 15 – This specifies the reset period for the CPU monitoring and throttling limits for the application pool.
Change the Queue Length from 1000 to 2500 – This increases the queue length for the application pool.
Das Re-Indexing reicht einmal im Monat. Läuft dein Wsus schon immer auf einem vollwertigen SQL Server, oder hast du Migriert? Bei einer Migration konnte ich bisher keine Performance gewinne feststellen. Von Anfang an ist sogar ein SQL-Express ein riesen Gewinn.
Gruß
Spirit
Moin @Spirit-of-Eli,
eine SQL-Express DB solltest du nur dann verwenden, wenn du dir sicher bist, dass deinen SUSDB nicht über 10G gross wird.
Die meisten SUS-DB's unserer Kunden haben jedoch meistens weit über 50 GB. 😔
Gruss Alex
Von Anfang an ist sogar ein SQL-Express ein riesen Gewinn.
eine SQL-Express DB solltest du nur dann verwenden, wenn du dir sicher bist, dass deinen SUSDB nicht über 10G gross wird.
Die meisten SUS-DB's unserer Kunden haben jedoch meistens weit über 50 GB. 😔
Gruss Alex
Moin @pcpanik:
🤔 ... du hast die SUSDB ja auf einem erwachsenen SQL Server.
Hast du auf der SUSDB schon den Abfragespeicher mal testweise aktiviert?
https://learn.microsoft.com/de-de/sql/relational-databases/performance/m ...
https://learn.microsoft.com/de-de/sql/relational-databases/performance/b ...
Damit lässt sich relativ einfach rausfieseln, welcher SQL dir das Genick bricht.
Aktiviere auf der SUSDB einfach den Abfragespeicher und mache ein paar mal hintereinander den Vorgang der zum Absturz führt.
Danach solltest du über die folgende Auswertung ...
... den Übeltäter relativ einfach entlarven können. 😉
Gruss Alex
invoke-wsusservercleanup -CompressUpdates
invoke-wsusservercleanup : Das Ausführungstimeout ist abgelaufen. Der Timeoutzeitraum wurde überschritten, bevor der
Vorgang beendet wurde, oder der Server antwortet nicht.
Der Vorgang wurde vom Benutzer abgebrochen.
Die Anweisung wurde beendet.
In Zeile:1 Zeichen:1
invoke-wsusservercleanup -CompressUpdates
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidData: (Microsoft.Updat...rCleanupCommand:InvokeWsusServerCleanupCommand) [Invoke-
WsusServerCleanup], SqlException
FullyQualifiedErrorId : UnexpectedError,Microsoft.UpdateServices.Commands.InvokeWsusServerCleanupCommand
... noch mal versucht. 150s
invoke-wsusservercleanup : Das Ausführungstimeout ist abgelaufen. Der Timeoutzeitraum wurde überschritten, bevor der
Vorgang beendet wurde, oder der Server antwortet nicht.
Der Vorgang wurde vom Benutzer abgebrochen.
Die Anweisung wurde beendet.
In Zeile:1 Zeichen:1
invoke-wsusservercleanup -CompressUpdates
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidData: (Microsoft.Updat...rCleanupCommand:InvokeWsusServerCleanupCommand) [Invoke-
WsusServerCleanup], SqlException
FullyQualifiedErrorId : UnexpectedError,Microsoft.UpdateServices.Commands.InvokeWsusServerCleanupCommand
... noch mal versucht. 150s
🤔 ... du hast die SUSDB ja auf einem erwachsenen SQL Server.
Hast du auf der SUSDB schon den Abfragespeicher mal testweise aktiviert?
https://learn.microsoft.com/de-de/sql/relational-databases/performance/m ...
https://learn.microsoft.com/de-de/sql/relational-databases/performance/b ...
Damit lässt sich relativ einfach rausfieseln, welcher SQL dir das Genick bricht.
Aktiviere auf der SUSDB einfach den Abfragespeicher und mache ein paar mal hintereinander den Vorgang der zum Absturz führt.
Danach solltest du über die folgende Auswertung ...
... den Übeltäter relativ einfach entlarven können. 😉
Gruss Alex