0.9.9-2 - Javascript und andere Leistungsdefizite
-
Hallo zusammen,
beschäftige mich nun seit 2 Wochen mit I-Doit und ich muss sagen, es ist wirklich ein hervorragendes System !
Vor allem die Konfigurationsfreiheit und klare Strukturierung gefällt mir.Da ich auch daran Interesse habe, dass dieses System sich verbessert, habe ich ein paar Anmerkungen:
Ich habe ein größeres Problem mit der Performance der Javascript-Treeview bei der Anzeige nach Standorten. Wenn ich das korrekt gesehen habe, wird der gesamte Tree in JS zusammengepuzzelt, was auch bei ein paar hunder Objekten kein Problem dazustellen scheint. Da ich mittlerweile über 9000 Objekte habe dauert es (egal ob FF, IE, oder Opera) mindestens 20 Sekunden bis der Browser weiterarbeitet (mit dem wohl bekannten "Skript-Abbrechen"-Dialog).
In einigen Fällen ist es sinnvoll den Client per JS rechnen zu lassen, aber in Bereichen wo eine unbekannte Anzahl an Objekten erreicht werden kann, wäre ein serverseitiger Aufbau des Trees von Vorteil (oder das Javascript muss optimiert werden).Ein weiteres Performanceproblem, welches wohl auch mit der Menge der Daten zusammenhängt, ist die Geschwindigkeit der einzelnen Seiten. Ich habe dazu die Logs aus der Datenbank angeschaut:
Ein Aufruf von "Clients" in der Infrastrukturübersicht erzeugte eine Logdatei mit über 38000 Zeilen, wobei jede ein Query darstellt.
Hier sollte auf jeden Fall etwas getan werden und die Abfragen Optimieren (wenn ich das beim Query-Log-lesen richtig gesehen habe, dann werden für jedes einzelne Objekt mehrere SQL-Abfragen abgesendet (WHERE isys_obj__id='52', WHERE isys_obj__id='53' usw.). Dies könnte mit einem sauberen Pageing behoben werden: "SELECT … FROM ... WHERE isys_obj__isys_obj_type__id=11 LIMIT 0,20" => "SELECT ... FROM ... WHERE isys_obj__isys_obj_type__id=11 LIMIT 20,20".Leider kam ich selbst noch nicht dazu mich näher mit dem Aufbau und der Programmierung von I-doit auseinanderzusetzen, sonst wäre meine Kritik etwas präziser.
Ich habe auch irgendwo hier im Forum gelesen, dass mit dem nächsten Update auch Performanceoptimierungen zu erwarten sind, ich bin gespanntViele Grüße
-
Hallo,
die Problematik mit dem JS-Baum ist uns bekannt, da wird es in naher bis mittlerer Zukunft auch Abhilfe geben.
Was das Problem der Anzahl der Queries angeht, ist diese Frage nicht mit einem pauschalen "Paging" zu beantworten. Die Gründe für die vielen Queries sind wesentlich komplexer und vielschichtiger. Es gibt natürlich trotzdem Verbesserungsbedarf in dieser Hinsicht.
Wenn Du uns einen konkreten Verbesserungsvorschlag vorlegen kannst, dann natürlich immer her damit
Grüße
-
Hallo und danke für die schnelle Antwort
Ja, das Pageing war nur ein Bsp.
Ich war nur schockiert, als ich die Menge der Queries gesehen hatte.Habe vorhin die Zeit gestoppt für ein Standortupdate (da werden wie es ausschaut die ganzen Positionen neu gesetzt): 3:20 Minuten und Logfile mit 7MB (69k Zeilen)
Werde das System spätestens morgen auf eine dedizierte Linux-Maschine migrieren, bin gespannt ob es sich dann verbessert (bin derzeit auf einem Win2k8,2GB RAM, Dual 2,4GHz,IIS und Testsystem mit 2k8,2GB RAM,Apache)
-
Derzeit wird ja der dtree verwendet, dieser wird komplett aufgebaut => wenn der Benutzer nur die Daten unter Standort X sehen möchte, muss auch Standort Y komplett geladen werden.
Habe mich etwas umgeschaut was für Treeviews es noch so gibt und bin auf folgenden gestoßen:
http://webfx.eae.net/dhtml/xloadtree/xloadtree.html
(Apache Licence)Baut sich dynamisch auf mit Ajax und holt die Daten aus einer XML (die von einem PHP-Skript generiert wird).
als Notiz hier mal ableg
-
Bin jetzt auf eine "4 CPU 8GB RAM Linux"-Maschine umgezogen und habe ein wenig Geschwindigkeitszuwachs (max 10%) bekommen.
Habe jetzt erste Optimierungen am Code vorgenommen und unter anderem folgende Zeile auskommentiert:
src/classes/components/isys_component_list.class.php:422-428Hier werden HTML-Tags (und JS-Events) um die Werte aus der DB gepuzzelt um diese in der Temp-Tabelle abzulegen, was leider die Datentransfermenge extrem erhöht.
Bei der Anzeige der Tabelle werden die Tags, da diese noch nicht vorhanden sind, eingefügt.Geschwindigkeitsvorteil: min. 50%
Werde am Montag weiter an Optimierungen arbeiten, vor allem die Geschichte mit dem dtree werde ich mir anschauen.
(kann derzeit keine Workflows erstellen, weil 9000 Objekte zuviel sind für das Script)