Anzeichen für I/O-Probleme
Wenn die Performance der Website oder der Applikation zu wünschen übrig lässt, muss zunächst die Ursache gefunden werden. Neben der CPU-Auslastung und der Nutzung des Arbeitsspeichers kann man unter Unix mit dem Befehl top auch die Auslastung des Massenspeichers erkennen. Der sog. “iowait”-Wert bzw. die “wait-states” beim Zugriff auf den Massenspeicher sind ein guter Indikator. Ist dieser Wert zu hoch (noch höher als in unserem Beispiel unten), könnte dies auf einen Engpass im I/O Zugriff auf den Massenspeicher hindeuten.
Auch über Monitoring-Tools kann man die I/O-Auslastung natürlich gut beurteilen. Wir bei ScaleUp nutzen hier check_mk. So können wir und unseren Kunden ihre Systeme hinsichtlich Auslastungsdaten im Blick zu behalten.
Es gibt I/O Engpässe – was nun?
Hat man einen I/O-Engpass erkannt, müssen nun die Gründe hierfür ermittelt werden. Oftmals lässt sich die Anzahl der I/O-Anforderungen durch eine angepasste Konfiguration der Anwendungen deutlich reduzieren. Hier kommt bspw. die Nutzung von Caches (z. B. Redis, Memcached) oder die Optimierung von Datenbankabfragen in Betracht.
Auch eine Änderung der eingesetzten Technologie kann eine Lösung sein. Ein Beispiel ist die im weit verbreiteten CMS Typo3 integrierte Volltextsuche. Ohne weitere Anpassungen läuft die Suche dort über die Datenbank. Bei großen Webseiten mit mehreren tausend Dokumenten ist diese Art der Suche sehr ineffizient. Die eigentlichen Datenbankabfragen erfassen sehr viele Zeilen. Durch intelligentes Design dieser Abfragen könnte man dies eigentlich lösen. In der Praxis geht dies aber nicht, weil die Datenbankabfragen vom Typo3 Framework generiert werden. Die beste Lösung in diesem konkreten Fall wäre die Nutzung einer externen Suchengine wie bspw. Apache Solr oder Elasticsearch.
I/O-Performance steigern
Manchmal ist aber die Verbesserung der I/O Performance des Massenspeichers die einzig praktikable Lösung. Hierfür bietet es sich an, auf einen schnelleren Massenspeicher wie SSD oder NVMe zu setzen. Bei manchen IaaS-Anbietern, wie auch bei uns mit der Open Cloud, besteht bspw. die Möglichkeit Instanzen (VMs) mit lokalem SSD-Speicher zu nutzen — im Gegensatz zum netzwerkbasierten Speicher der sonst verwendet wird. Hier muss allerdings beachtet werden, dass der Speicher nur lokal auf einem physikalischen Server liegt und bei Ausfall dieses Servers nicht mehr zur Verfügung steht. Bei Anwendungen, die redundant mit mehreren Instanzen betrieben werden, ist dies jedoch unproblematisch.
Im zentralen Massenspeicher unserer IaaS-Cloud nutzen wir auch zunehmend Flash Speicher (SSD, NVMe). Aufgrund der Netzwerklatenz kann dieser jedoch nicht die Geschwindigkeit des lokalen SSD Speichers erreichen.
Sie haben Fragen oder spezielle I/O Anforderungen? Nehmen Sie gerne Kontakt mit uns auf.