Wie Steam-Mining meine VM zerstörte

In einem vor Kurzem veröffentlichten Artikel habe ich bereits über meinen Plan berichtet Steam Daten zu sammeln und welche Datensätze ich erhalten kann. In der Zwischenzeit habe ich nun bereits mit der Datensammlung begonnen und bin auf ein paar Probleme gestoßen.

Multi Threading ist keine Lösung

Anders als sich vielleicht vermuten lässt brachte mir MultiThreading nur Probleme ein. Der Grund dafür ist aber relativ simpel. bei Datenmengen welche sich im 6-7 stelligen Bereich befinden dauert die Abfrage mittels eines Threads eine Ewigkeit, weshalb ich die Anzahl der Threads auf einen 4 Stelligen Wert gesetzt habe. Diese Anpassung sorgt zwar dafür, dass die Abfrage verhältnismäßig schnell geht aber auch dafür, dass die VM dauerhaft auf einer 90-100% Auslastung ist während das Script läuft. Auch hält diese memory peek eine ganze Weile an, wie sich nun zeigte länger als mein angepeilter Zyklus für die Datenabfrage, was zur Folge hatte, dass die VM dauerhaft ausgelastet war. Bisher habe ich leider noch keine Lösung für dieses Problem gefunden, ich bin für Vorschläge zu haben.

Rate-Limits

Das zweite große Problem sind die Rate-Limits, welche für die angepeilte Datenmenge ziemlich gering sind. Nach ersten Testanläufen fand ich eine Dokumentation welche mir offenlegte, dass pro Stunde nur 100.000 an die meisten APIs getätigt werden dürfen. Dies bedeutete für mich, dass ich von einzelnen Anfragen mit mehr Informationen zum jeweiligen Titel auf Bulk-Anfragen mit ca. 1000 Titeln pro Anfrage mit weniger Informationen umstellen musste, um nicht bei jedem Durchlauf die Grenze zu übeschreiten.

Neuer Versuch

Bevor ich noch einmal versuche regelmäßig Daten abzufragen habe ich noch einiges zu tun, einerseits muss ich das Thread-Problem beheben. Andererseits werde ich die Datenpersistenz nach Elasticsearch umziehen, was für eine spätere Analyse der Daten einen erheblichen Vorteil in Ladezeiten zur Folge haben wird. Meine DB-Datensammlung synce ich inzwischen auch weitesgehend nach Elasticsearch, aus dem selben Grund.

Sobald diese Änderungen vollzogen sind und ich einen ersten kleinen Test durchgeführt habe, welcher hoffentlich nicht meine VM röstet, werde ich ähnlich wie beim DB-Mining im 2 Stunden Zyklus eine Datenabfrage durchführen und diese nach vermutlich auch wieder in einem Grafana oder Kibana graphisch darstellen. Sobald dies der Fall ist werde ich wieder einen Artikel zu diesem Thema verfassen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.