kostenloser Webspace werbefrei: lima-city


Homepage MySQL wird immer langsamer

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    javaphp

    Kostenloser Webspace von javaphp

    javaphp hat kostenlosen Webspace.

    Hallo,

    ich betreibe eine kleine Homepage die Daten von einer REST API holt und anschließend Informationen darauf basierend anzeigt.

    Aber seit einiger Zeit wird die Homepage extrem langsam. Anfang des Jahres war die Ladezeit einer Seite noch bei 1 Sekunde (laut webmaster tools google). Inzwischen ist die Ladezeit bei 20 Sekunden. Als Besucher merkt man das dann schon.

    Leider weiß ich nicht wo ich anfangen soll das Problem zu beheben.

    Ich vermute ja, dass die MySQL Datenbank einfach nicht mehr performant genug ist ??
    Inzwischen sind 5GB an Daten in der MySQL DB bei 5,5 Millionen Datensätzen.
    Auch das phpmyadmin ist sehr langsam geworden und braucht ewig um irgendetwas anzuzeigen.
    Ist MySQL für solche Datenmengen noch brauchbar, oder liegt das Problem sowieso woanders?


    Eventuell habt ihr Tipps wie ich das Problem analysieren kann. Und die Homepage wieder schnell machen kann.


    Noch ein paar Infors zum Setting, sollte das relevant sein:
    Das Setting ist ein nginx auf einem vServer für php. Und ein weiterer vServer wo die MySQL DB liegt.
    Also DB und Programmlogik sind auf 2 getrennten Rechnern.

    Beitrag zuletzt geändert: 7.6.2016 9:42:23 von javaphp
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. mein-wunschname

    mein-wunschname hat kostenlosen Webspace.

    Ich persönlich habe keine Erfahrungen mit Datenbanken dieser Größe, allerdings sagen die Angaben auch wenig aus. Auf wieviele Tabellen sind die Daten verteilt, wie viele Abfragen werden ausgeführt, um eine Webseite auszuliefern?
    In ähnlicher Weise wird das Thema MySQL Performance hier
    http://stackoverflow.com/questions/1276/how-big-can-a-mysql-database-get-before-performance-starts-to-degrade
    diskutiert. Du solltest übrigens die Performance deiner Datenbank nicht mit der Auslieferungszeit deiner Website via Google Webmaster Tools gleichsetzen.
    Ein einfaches selbstgestricktes Abfragetool oder direkte Abfrage mit phpMyAdmin ist aussagekräftiger.
  4. Einiges hängt sicherlich auch am Code.

    Viele Schleifen, in denen auch noch MySQL Anfragen laufen, büssen auch Ladezeiten ein.

    Die Datenmenge, die du Anzeigen lässt, spielt auch eine Rolle. Dabei kann man auch schnell ans Ende von Scriptlaufzeiten geraten. Ist mir schon passiert.

    Gibt auch noch viele gerade Anfängerfehler, die sehr viel Performance einbüssen. Meist, wenn man nicht alle Möglichkeiten ausschöpft, die MySQL allein schon bietet, wie Datumsfunktionen oder Tabellenverknüpfungen.

    Und Google Trends bewertet ja auch noch den HTML Teil. Auch hier lässt sich viel beschleunigen. Ebenso im PHP-Code selbst. Meine Erfahrung hat z.B. gezeigt, dass auf OOP basierende Scripte im Vergleich wesentlich langsamer sind.

    PHPMyAdmin ist auch ein Script, dass nicht gerade auf Performance ausgelegt ist.
  5. Autor dieses Themas

    javaphp

    Kostenloser Webspace von javaphp

    javaphp hat kostenlosen Webspace.

    Ich hab mir einmal eine Unterkategorie der Seite angesehen und folgendes festgestellt.
    Habe mir dafür meinen Logger erweitert. Laut dem ist der Schuldige ein einziger aufruf:
    Nämlich der ziemlich in der Mitte der 16 Sekunden dauert. (log auschnitt unten, von einem seitenaufruf)


    Die eine Tabelle die hier aufgerufen wird hat 2 Millionen Rows bei 415MB.
    Der Primary Key geht über 3 Tabellen, und die Spalte "timestamp" ist auch noch indiziert.

    Ist hier das Layout schlecht gewählt worden von mir?
    Ist mein SQL Befehl schlecht geschrieben?

    Wenn ich den Befehl mit einem dummy ersetze, lädt die Sub-Seite wieder schnell :/

    SELECT 
    	g.idd,
    	(select keyName from data d where d.id = g.idd limit 1) as name 
    from games g 
    where 
    	plid = :plid and 
    	region = :region 
    order by timestamp desc limit 1



    [10:21:12] - Start class loader - 0.07711200 1465291272
    [10:21:12] - End class loader - 0.07776600 1465291272
    
    [10:21:12] - Start get config - 0.07799400 1465291272
    [10:21:12] - End get config - 0.09362500 1465291272
    
    [10:21:12] - start language/meta - 0.09411200 1465291272
    [10:21:12] - end language/meta - 0.12678400 1465291272
    
    [10:21:12] - start get page object - 0.12761800 1465291272
    [10:21:12] - end get page object - 0.14298500 1465291272
    
    [10:21:12] - start get object info via REST - 0.14347900 1465291272
    [10:21:12] - end get object info via REST - 0.39353900 1465291272
    
    
    [10:21:12] - start get image names - 0.39402100 1465291272
    [10:21:28] - end get image names - 0.65416900 1465291288
    
    
    [10:21:28] - start get background images - 0.65475200 1465291288
    [10:21:28] - end get background images - 0.67158400 1465291288
    
    [10:21:28] - start get page objects details - 0.67249800 1465291288
    [10:21:28] - end get page objects details - 0.70453200 1465291288
    
    [10:21:28] - start get additional Data - 0.70496600 1465291288
    [10:21:28] - end get additional Data - 0.72751900 1465291288
    
    [10:21:28] - start get most visited - 0.72826300 1465291288
    [10:21:28] - end get most visited - 0.74563100 1465291288


    Beitrag zuletzt geändert: 7.6.2016 11:41:30 von javaphp
  6. Führ den Befehl mal in Phpmyadmin aus und setz ein EXPLAIN davor. Das zeigt dir dann, ob und welche Indizes bei der Abfrage genutzt wurden.

    Beitrag zuletzt geändert: 8.6.2016 4:44:23 von chatter
  7. Autor dieses Themas

    javaphp

    Kostenloser Webspace von javaphp

    javaphp hat kostenlosen Webspace.

    Danke für den Tipp mit EXPLAIN, diesen Befehl kannte ich noch gar nicht.

    Ich hab mal einen Screenshot angehängt.
    http://javaphp.lima-city.de/communityHelp/explain.png

    Wenn ich mir das so ansehe, heißt da ja, dass er für die erste Tabelle keinen Index verwenden kann (mit ausnahme des timestamps zum sortieren).
    Verstehe ich das richtig?
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!