Thrashing

July 28th, 2008 ron Posted in Server 1 Comment »

Bei einem Webserver kann Thrashing auftreten, wenn zum Beispiel eine Webseite sehr stark von Datenbankabfragen abhängig ist. Wenn die Datenbank beispielsweise aufgrund von Table-Locks Anfragen des Webservers nicht beantwortet, bleiben die Prozesse des Webservers eine ziemlich lange Zeit unbearbeitet im Hauptspeicher hängen. Bei einer gut besuchten Seite kann dies nun dazu führen, dass die Zahl dieser wartenden Prozesse rasant anwächst. Zwar verursachen sie keine große CPU-Last, aber der Speicher des Servers kann ziemlich schnell volllaufen. Ist dies der Fall, fängt der Server an, die am längsten nicht benötigten Speicherbereiche auf die Festplatte auszulagern, was zu erheblicher Festplattenaktivität führt.

Irgendwann wird der Server wieder Daten benötigen, die auf der Platte liegen und diese somit laden müssen und dafür andere Daten aus dem RAM auf die Platte speichern. Dauert dies eine Zeitlang an, schaukelt sich das ganze unter Umständen so weit hoch, dass der Server nach außen gar nicht mehr zu reagieren scheint.

Verschlimmert wird dies dadurch, dass der Browser des Users nach einer gewissen Zeit die Verbindung abbricht, was der betreffende Server-Prozess aber gar nicht mitbekommt und somit weiter vom System verwaltet wird, bis auch hier irgendwann ein Timeout dafür sorgt, dass der Prozess beendet wird. Viele User klicken außerdem in dieser Situation erst einmal munter ein bis mehrere Male auf “Reload” und starten damit einen neue Webserver-Prozesse, so dass sich der Prozessstau noch weiter verschlimmert. Unter Umständen kann dies auch zum Zusammenbruch des Servers führen.

AddThis Social Bookmark Button




Amazon Bookshop