Warum Farmsysteme in OpenSim schlecht sind

  1. vor 4 Wochen

    Kubwa

    Hyper-Muskelrüde
    Bearbeitet vor 4 Wochen von Kubwa

    Ich höre immer wieder, wie begeistert einige diesen tollen Farmsystemen in OpenSim hinter her laufen. Wie begeistert die Leute sind, wenn sie ihre Enten oder was auch immer füttern oder ihre Pflanzen gießen.

    Das Ganze hat aber auch eine gravierende Schattenseite, besonders aus technischer Sicht.

    Anhand eines Beispiels (ein großes Grid, das mich freundlicherweise einen Blick in seine Daternbank hat werfen lassen), möchte ich hier das größte Problem dieser Systeme zeigen.

    ACHTUNG: Die folgenden SQL Queries brauchen unter Umständen SEHR lange zur Ausführung und belasten den Server.

    Das grid, um das es hier geht, hat ca. 22 millionen Assets in seiner Datenbank:
    SQL Query:

    SELECT COUNT(*) FROM fsassets

    -image-

    Betrachten wir die häufigsten Assets in der Datenbank, sehen wir, dass eine von Scripten generierte Notecard am häufigsten ist:
    SQL Query:

    SELECT * FROM (SELECT *, COUNT(*) AS num FROM fsassets GROUP BY HASH) AS subsel ORDER BY num DESC LIMIT 25

    -image-

    Wir haben hier eine Auffälligkeit. Der Query oben zeigt uns an, welche Assets im fsasset am häufigsten dedupliziert wurden. Das bedeutet bei dem ersten Asset in der obigen Ausgabeliste ("storagenc-old"), dass 591092 mal diese Notecard, mit exakt dem selben Inhalt abgespeichert wurde! Die Beschreibung "Script generated notecard" wird automatisch von OpenSim gesetzt und zeigt an, dass es eine Notecard ist, die von einem Script erzeugt wurde.

    Für den folgenden Schritt müssen wir wissen, dass der fsasset Speicher eine Information bereitstellt, wann ein Asset das letzte mal benutzt wurde. Dieser Zeitstempel wird immer dann gesetzt, wenn OpenSim das Asset benötigt und abruft. Wir schauen also einmal nach, wie viele Notecards, die von Scripten erzeugt wurden, insgesamt in der Datenbank liegen, die, sagen wir mal, ein Jahr nicht mehr gebraucht wurden. Die also eigentlich Datenmüll sind.
    SQL Query:

    SELECT COUNT(*) AS num
    	FROM (SELECT * FROM fsassets WHERE `type` = 7) AS notecards
    	WHERE description = 'Script generated notecard' AND 
    			access_time < UNIX_TIMESTAMP() - 86400 * 365

    -image-

    Über 3,5 MILLIONEN Assets, die eigentlich Datenmüll sind. Ausschließlich von Scripten erstellte Notecards. Das sind knapp 16% des gesamten Assetaufkommens! Da möchten wir einmal eine Stichprobe machen und schauen was das für Notecards sind. Wir rufen die ersten 10000 Notecards ab.
    SQL Query:

    SELECT *
    	FROM (SELECT * FROM fsassets WHERE `type` = 7) AS notecards
    	WHERE description = 'Script generated notecard' AND 
    			access_time < UNIX_TIMESTAMP() - 86400 * 365
    	LIMIT 10000

    -image-

    Die ganze Liste kann ich hier nicht zeigen, aber es setzt sich so fort. Wir haben nahezu ausschließlich verschiedene Varianten von diesen Notecards. Inklusive der storage notecards. Hauptsächlich finden wir hier aber die oben aufgeführten Notecards.

    Eine Recherche ergibt schnell, dass es sich um Notecards handelt, die von diversen Farmsystemen erstellt werden:
    https://zetaworlds.com/blog/view/SF-removal

    Warum ist das ein Problem?
    Grundsätzlich stellt eine große bis sehr große Anzahl an Assets kein Problem für die Datenbank da. Auch die Geschwindigkeit leidet nur begrenzt darunter.
    Massive Probleme bereiten solche Datenmengen beim Erstellen von Backups. Sie zögern backups hinaus und verbrauchen eine Menge Backupspeicherplatz, der anderweitig sinnvoller verwandbar wäre.

    Es sollte also darauf geachtet werden, Farmsysteme, im besonderne die Satyr Farm, nicht oder sehr begrenzt einzusetzen.

    Mit dem kommenden Manager Update wird eine Funktion eingebaut, die den Assetserver von solchen Notecards bereinigen kann. Von Scripten generierte Notecards, die länger als 90 Tage nicht gebraucht wurden, werden dann automatisch gelöscht, sollte die Assetbereinigung in den Einstellungen aktiviert sein. Das Problem wird diese Funktion aber nicht beheben, lediglich leicht abfedern.

  2. Spannend,
    vielen Dank für Deine Ausführungen, auch hier lernt man immer wieder was dazu.

    Top Job, den Du da machst !

 

oder registriere Dich, um zu antworten!