Liveconfig langsam bei 1.600 Domains

  • Guten Morgen,


    wir haben Liveconfig derzeit auf einem Server im Einsatz, wo nur Domains eingerichtet und weitergeleitet werden.


    Aktuell haben wir dort ca. 1.600 Domains eingetragen. Inzwischen muss man mehrere Sekunden warten bis die Domainliste angezeigt wird. Die Admin-Bereiche, wo u.a. auch Daten über z.B. die Menge der Domains etc. angezeigt werden sind entsprechend langsam. Während man in der Liveconfig-Oberfläche sich z.B. die Domainliste anzeigen lässt sehe ich via Shell das liveconfig/SRVR bis zu 100% Auslastung produziert.


    Da der Server ausreichend stark dimensioniert ist (4-Kern CPU, 16GB RAM, SSD) vermute ich den Flaschenhals in der SQLite-Datenbank. Gibt es zu solchen Geschwindigkeitseinbußen hier bekannte max. Werte?


    Ich würde gerne testweise von SQLite auf mySQL umstellen um zu sehen ob es ggfs. daran liegt. In der Konfigurationsdatei von liveconfig kann ich zwar auf mySQL umstellen, aber a) legt liveconfig die Tabellen selber dann an und b) wie kann ich die Daten mirgieren. Ist die SQLite-Datei /var/lib/liveconfig/liveconfig.db regulär lesbar?


    Ich freue mich auf Feedback


    Dennis

  • Ja, der Flaschenhals dürfte bei SQLite liegen. Genaue "Grenzwerte" bis wann SQLite ausreicht gibt es nicht, da es zu sehr auf die jeweilige Maschine ankommt (I/O-Leistung, tatsächliche Auslastung, etc.). Wichtiger als die Zahl der Domains ist eher die Zahl der Verträge und Postfächer - für diese werden regelmäßig Statistikdaten eingesammelt (insbes. Quota), was die Datenbank ziemlich beschäftigt.


    Eine Umstellung von SQLite auf MySQL ist aber problemlos möglich, siehe http://www.liveconfig.com/de/kb/15
    Auf die SQLite-Datenbank können Sie mit dem Tool "sqlite3" zugreifen (ist in jeder Distribution über den Paketmanager installierbar).


    Viele Grüße


    -Klaus Keppler

  • Hallo Herr Keppler,


    vielen Dank für den Hinweis zum KB-Artikel.


    Habe die DB nun mySQL umgestellt, leider ohne Erfolg. Habe daher das mySQL-Slow-Log angeschaltet und bekomme nun wiederkehrend solche Meldungen.


    Code
    # Time: 150504 11:48:32
    # User@Host: liveconfig[liveconfig] @ localhost [127.0.0.1]
    # Query_time: 22.190341  Lock_time: 0.000121 Rows_sent: 1  Rows_examined: 10652076
    SET timestamp=1430732912;
    SELECT HC_ID, HC_NAME, HC_EXTDOMAINS, HP_EXTDOMAINS, HC_SUBDOMAINS, HP_SUBDOMAINS, COUNT(DISTINCT  ALLDOMAINS.D_ID) AS DOMAINCOUNT, COUNT(DISTINCT  EXTDOMAINS.D_ID) AS EXTDOMAINCOUNT, COUNT(DISTINCT  SD_ID) AS SUBDOMAINCOUNT FROM (SELECT DISTINCT CP_OBJECTID FROM (SELECT GP_MODULEID AS CP_MODULEID, GP_PERMISSIONID AS CP_PERMISSIONID, GC_OBJECTTYPE AS CP_OBJECTTYPE, GC_OBJECTID AS CP_OBJECTID FROM GROUPCUSTOMERS, GROUPPERMISSIONS WHERE ( ( ( ( ( GC_CUSTOMERID = 5 ) AND ( GC_GROUPID = GP_GROUPID ) ) AND ( GP_MODULEID = 2 ) ) AND ( GP_PERMISSIONID = 3 ) ) AND ( GC_OBJECTTYPE = 1 ) ) UNION SELECT CP_MODULEID, CP_PERMISSIONID, CP_OBJECTTYPE, CP_OBJECTID FROM CUSTOMERPERMISSIONS WHERE ( ( ( ( CP_CUSTOMERID = 5 ) AND ( CP_MODULEID = 2 ) ) AND ( CP_PERMISSIONID = 3 ) ) AND ( CP_OBJECTTYPE = 1 ) )) AS CP, (SELECT GP_MODULEID AS UP_MODULEID, GP_PERMISSIONID AS UP_PERMISSIONID, GU_OBJECTTYPE AS UP_OBJECTTYPE, GU_OBJECTID AS UP_OBJECTID FROM GROUPUSERS, GROUPPERMISSIONS WHERE ( ( ( GU_USERID = 2 ) AND ( GU_GROUPID = GP_GROUPID ) ) AND ( ( ( GP_MODULEID = 0 ) AND ( GP_PERMISSIONID = 0 ) ) OR ( ( ( GP_MODULEID = 2 ) AND ( GP_PERMISSIONID = 3 ) ) AND ( GU_OBJECTTYPE = 1 ) ) ) ) UNION SELECT UP_MODULEID, UP_PERMISSIONID, UP_OBJECTTYPE, UP_OBJECTID FROM USERPERMISSIONS WHERE ( ( UP_USERID = 5 ) AND ( ( ( UP_MODULEID = 0 ) AND ( UP_PERMISSIONID = 0 ) ) OR ( ( ( UP_MODULEID = 2 ) AND ( UP_PERMISSIONID = 3 ) ) AND ( UP_OBJECTTYPE = 1 ) ) ) )) AS UP WHERE ( ( ( ( ( CP_MODULEID = UP_MODULEID ) AND ( CP_PERMISSIONID = UP_PERMISSIONID ) ) AND ( CP_OBJECTTYPE = UP_OBJECTTYPE ) ) AND ( CP_OBJECTID = UP_OBJECTID ) ) OR ( ( UP_MODULEID = 0 ) AND ( UP_PERMISSIONID = 0 ) ) )) AS PERM, HOSTINGCONTRACTS LEFT JOIN HOSTINGPLANS ON ( HC_PLANID = HP_ID ) LEFT JOIN DOMAINS AS ALLDOMAINS ON ( HC_ID = ALLDOMAINS.D_CONTRACTID ) LEFT JOIN DOMAINS AS EXTDOMAINS ON ( ( HC_ID = EXTDOMAINS.D_CONTRACTID ) AND ( EXTDOMAINS.D_TYPE = 1 ) ) LEFT JOIN SUBDOMAINS ON ( ( ( ALLDOMAINS.D_ID = SD_DOMAINID ) AND ( SD_HOST <> "" ) ) AND ( SD_HOST <> "www" ) ) WHERE ( ( PERM.CP_OBJECTID = HC_ID ) AND ( HC_DELETED = 0 ) ) GROUP BY HC_ID, HC_EXTDOMAINS, HP_EXTDOMAINS, HC_SUBDOMAINS, HP_SUBDOMAINS;


    Dennis Grote

  • Hallo,


    wenn möglich führen Sie den SELECT-Befehl aus dem Slow-Query-Log mal mit dem Befehl "EXPLAIN " (als Präfix) aus. Das Ergebnis schicken Sie uns am besten per Mail (support@liveconfig.com).
    Ich tippe darauf, dass es eni großes "Ungleichgewicht" in der Schlüsselverteilung gibt, was zu der langen Ausführungszeit führt.
    Unabhängig davon sollten aber auf einer SSD Abfragen mit 10 Mio durchsuchten Records trotzdem keine 22 Sekunden dauern...


    Viele Grüße


    -Klaus Keppler

  • Hallo Herr Keppler,


    Mail mit dem Screenshot ist raus.


    Ich habe mir auch die Last des Laufwerks mit iostat während der Ausführung angeschaut und keine Nennenswerte Lese- oder Schreibaktivitäten beobachten können. Selbst mit SATA-HDD dürfte das keine Auswirkungen haben.


    Dennis Grote

  • Wollte noch kurz Rückmeldung geben. Habe jetzt die neue Version 1.8.3 im Einsatz und der Kunde hat inzwischen über 2.200 Domains seinem "einen" Account. Die Geschwindigkeit beim Menüpunkt "Domains" ist nun unglaublich schnell, die Optimierung hat sehr geholen Herr Keppler. Vielen Dank für die Top Unterstützung.


    Dennis Grote

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!