1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Wordpress langsam trotz Killer Server, Problem: "load average"

Dieses Thema im Forum "Konfiguration" wurde erstellt von dernabel, 3. September 2012.

  1. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Hallo Community,
    Ich benutzte für ein Projekt schon seit 4 Jahren Wordpress und aktuell 3.4.

    Kurz nach dem Umzug auf unseren neuen Server:



    die CPU-Last im Durchschnitt, also die Load Average, bekommt richtige Spitzen bis 47.00, wobei aber die CPU Auslastung nur bei 1 - 3 Prozent liegt!

    Also habe ich angefangen zu Cachen mit Hyper Cache, aber außer das die zugriffszeit brachial besser geworden ist, habe ich nach wie Vor diese Spitzen drin in der die Seite mega langsam ist!

    Wenn ich die Domain Verraten würde, dann würde jeder wissen das es Wirklich wichtig ist dieses Problem zu beheben, das möchte ich aber an dieser Stelle nicht. Fakt ist, ich un d mein Team sind Ratlos.

    Wir haben festgestellt, das wenn wir die Seite in den Wartungsmodus versetzten, die Last sofort richtung 0.03 % load Average fällt! Demnach liegt das Problem bei der Seite! ein Deaktivieren der Addons hat dabei keine verbesserung gebracht :( Auch habe ich keine Crons eingerichtet, kein eMailserver und wir sind alleine auf dem Server!

    Daten zu Seite:
    - klicks am Tag sind zwischen 10.000 bis 65.000
    - über 1174 Artikel, ca 26 Seiten
    - 16.460 Kommentare
     

    Anhänge:

    • Foto.jpg
      Foto.jpg
      Dateigröße:
      56,6 KB
      Aufrufe:
      19
  2. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Hach langen Googlen habe ich mal was gefunden was ich noch nicht gelesen habe. Zu meinen Erstaunen scheint es was gebracht zu haben, aber ich bin noch beim ersten Eindruck.

    Ich habe folgende Zeilen in meine wp-cofig.php geschrieben die angeblich ein Tuning bescheinigen sollen:

    define('WP_HOME', 'http://xxxxxxxxxxxxxxxxx.de'); /vermindert angeblich die Anzahl der DB Abfragen
    define('WP_SITEURL', 'http://xxxxxxxxxxxxxxxxxxxx.de'); /vermindert angeblich die Anzahl der DB Abfragen
    define('WP_MEMORY_LIMIT', '96M'); / testen mit 64,96,128
    define('WP_POST_REVISIONS', false); /das anlegen von Revisionen deaktivieren
    define('AUTOSAVE_INTERVAL', 180); /automatischen Speichern default:60sec auf 180sec oder mehr
     
  3. wpler40

    wpler40 Active Member

    Registriert seit:
    7. Juni 2012
    Beiträge:
    33
    Zustimmungen:
    0
    Caching ist schon mal das A & O, was aber hier sicherlich noch mal einen fetten Schub bringt, ist auf dem Server Varnish einzusetzen (wie siehe hier).

    Wenn nach deaktivierten Plugins die Site immer noch elendig lang braucht, hat das Theme vielleicht noch (diverse) Funktionen, die das Ganze ausbremsen?

    In unserem Gemeinschaftsbüro laufen bei einigen Leuten WP Multisites mit Blogs, die täglich um die 120k Besucher haben und selbst pidelige normale Dedi-Server um die 60,- € rum zucken nicht mal. Allerdings wird hier auch der Varnish eingesetzt, möglich das es daran liegt. Natürlich muss auch der Apache & MySQL optimiert sein ;)
     
  4. Blackzet

    Blackzet Member

    Registriert seit:
    4. September 2012
    Beiträge:
    24
    Zustimmungen:
    0
    Du solltest auch schauen, dass du die Website so klein wie möglich hälst!
    Das hat mir damals sehr geholfen : www.gtmetrix.com
     
  5. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    ich habe mich mal durchgelesen, vielen Dank für eure Antworten, das sind auf jeden Fall neue Optionen die wir noch nicht ausprobiert haben.

    Leider kann ich die Seite nicht kleiner machen und das liegt nicht an den bildern ( wenige ), sondern an den Informationen die wir den Besuchern zur verfügung stellen wollen und müssen.

    Ich werde berichten wie es weiter geht!
     
  6. Hille

    Hille Well-Known Member

    Registriert seit:
    22. Januar 2012
    Beiträge:
    7.965
    Zustimmungen:
    9
    Mal nach slow_query geschaut? Meine Empfehlung, memcached inkl.php APC, optimierte MySQL!. Als Cache Plugin 'Flexicache'. Das sollte für den Anfang einiges an Performance Gewinn bringen. Wenn du möchtest, kannst du gerne mal die Ausgabe von 'mysqltuner' und 'tuning-primer' hier posten. Das würde einiges an Aufschluss mehr bringen.
     
  7. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Ich lasse mir gerade seit einpaar Tagen im Quellcode die Anzahl der Querys ausgeben. Wieviel sollten es den Max sein, was ist normal!?? ich habe 318 und in guten Momenten generiert mir der Server das in 1 Sekunde!
     
  8. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Also ich drehe gleich durch, selbst wenn ich in der index.php das aufrufen der Seite ausklammere und einen Gruss reinschreibe, z.b. echo "'wegen Wartungsarbeiten geschlossen';" steigt die load average immer noch schubartig an und die Seite brauchert ewig zum laden, sogar der FTP Zugang stopt!
     
  9. Hille

    Hille Well-Known Member

    Registriert seit:
    22. Januar 2012
    Beiträge:
    7.965
    Zustimmungen:
    9
    Wo das Problem liegt, ist aus der Ferne natürlich schwer zusagen. Hast du aber mal dir die Ausgaben von 'mysqltuner' und 'tuning-primer' angeschaut? In vielen Fällen sind es Datenbank Probleme.
     
  10. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Danke euch allen, Eure Tuning Tips werde ich befolgen :)

    Aber jetzt kommt der hammer, ich glaub ich weiß nun was die Load Average verursacht! Mir ist aufgefallen das der server in regelmässigen abständen das Problem bekommt, da aber am Server nichts zu finden ist und auch das abschalten der Seite nichts gebracht hat, habe ich mal nachgesehen was überhaupt aufgerufen wird.

    Also habe ich mir einen eigenen kleinen Log geschrieben:
    echo '<div style="padding:30px;margin: 0 auto;"><h1>Wartungsarbeiten</h1>Auf Grund von Wartungsarbeiten an unserer Internetseite, sind wir f&uuml;r kurze Zeit nicht verf&uuml;gbar.<br />Bitte besuchen Sie uns zu einem sp&auml;teren Zeitpunkt nochmal.<br /><br /><strong>Ihr Verbraucherschutz.de Team</strong><div>';

    // kleines Log programm Start --- //
    $datum=date("d.m.Y:");
    $zeit=date("H:i:s");
    $ip=getenv("REMOTE_ADDR");
    $site=$_SERVER['REQUEST_URI'];
    $host=gethostbyaddr($ip);
    $eintragen="[$datum$zeit] - $ip - $host \"GET /$site HTTP/1.1\"";
    $datei=fopen("log.txt","a");
    fputs($datei,"$eintragen\n");
    fclose($datei);


    In der Logdatei steht nun drin, das wenn der Server das Problem bekommt, der msnBot innerhalt weniger sekunden versucht Inhalte auf meiner Seite bis zu 18 mal aufzurufen. Das alleine sollte nicht wirklich das Problem sein, aber es werden inhalte aufgerufen die es garnicht mehr gibt. Vor 4 Monaten hatte ich noch ein wpMU laufen mit Buddypress, daher gibt es diese ganzen User Links nicht mehr. und da liegt wohl mein Fehler.

    soll ich jetzt den MSN Bot einfach aussperren?? per robots.txt?? hört der den überhaupt darauf?? ich denke nicht!
     
  11. wemaflo

    wemaflo Well-Known Member

    Registriert seit:
    13. März 2009
    Beiträge:
    1.146
    Zustimmungen:
    0
    Jetzt hast du ja doch die Domain verraten ;)
    Also... Ich habe mal auf deinen Screenshot geschaut. Ich habe zwar nicht gefunden, wieviel Arbeitsspeicher verbaut ist, aber das wird ja vermutlich auch nicht ganz wenig sein, bei dem Prozessor. Ich weiß jetzt auch nicht, wie groß das Projekt ist und was da so Datenbankmäßig die Dimensionen sind. So ein Server sollte aber schon mit ein paar Anfragen pro Sekunde zurecht kommen. Ich vermute mal ganz frech, dass der einfach schlecht optimiert ist. Auch einen 404er auszuliefern sollte trotz WordPress nicht gerade kompliziert sein.

    Wenn ich jetzt deine Serverarchitektur richtig verstanden habe, hast du acht Kerne und eine Durchschnittsbelastung von 47.0, also 4700%. Das ist schon erstaunlich. Daher vermute ich, dass etweder der MySQL-Server ziemlich hängt, oder die Festplatten langsam sind (was, wenn MySQL nicht ordentlich cached aufs gleiche rauskommt).

    Was läuft denn da auf dem Server? Viele komplizierte Plugins? Wird noch was anderes aufgerufen, wenn WordPress geladen wird? Irgendwelche Statistiktools oder so?

    Edit:
    Ach so, der MSN-Bot sollte sich tatsächlich an die robots.txt halten. Ob es aber sinnvoll ist, Suchmaschinen auszusperren, ist ne andere Sache.
     
  12. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    @wemaflo: Verdammt!
     
  13. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Danke für den hinweiß, also werde ich mir gleich mal die 404 und ander Fehlerseiten ansehen.

    also an die sql DB haben wir natürlich auch gleich als erstes gedacht und dort angefangen zu optimieren, sie verwendet aber auch nur 4,% Speicher und wäre 60 MB groß wenn ich diese in einem SQL Dump packe. Der SQL Server steht ständig mit 12 % Last am gesamten System in der Liste, also auch nicht so der Engpass.

    Ich werde jetzt die Plugins der reihe nach anschalten und auch das Cachen optimieren, das habe ich Deinstalliert weil es mit komisch vorgekommen ist!
     
  14. wemaflo

    wemaflo Well-Known Member

    Registriert seit:
    13. März 2009
    Beiträge:
    1.146
    Zustimmungen:
    0
    Was denn? Problem gefunden?
    Ob es an langsamen Platten liegt, kannst du übrigens mit top gut beobachten, wenn da io des öfteren bei Zugriffen hoch geht und gleichzeitig Load Average steigt, wird vermutlich das Abarbeiten der Prozesse durch langsames Lesen ausgebremst. Das Programm iotop gibt noch ausführlichere Auskunft.
    Wenn der Cache für MySQL zu klein ist oder die Tabellen unoptimiert sind und dadurch nicht in den Cache passen, müssen sämtliche Tabellendaten vor jedem Aufruf von der Festplatte gelesen werden, das braucht Zeit. In der Zeit stehen deine 8 Prozessorkerne da rum und warten. Wenn du jetzt 100 Querys hast udn 100 Mal die Tabelle von der Platte geladen und durchsucht werden muss, summiert sich das ganz schön.

    Edit:
    Ah, die Antwort kam danach :)
     
  15. Hille

    Hille Well-Known Member

    Registriert seit:
    22. Januar 2012
    Beiträge:
    7.965
    Zustimmungen:
    9
    Ja, darin liegt auch meine Vermutung. Wie ich schon 2x geschrieben hatte, das kann man rechtgut mit den Tools 'mysqltuner' und 'tuning-primer' feststellen. Leider äußert sich der TS darauf nicht, warum auch immer :(.
     
  16. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    also folgende Werte in der my.cnf anpassen und wenn ich das richtig verstehe sollte man ehr die query_cache_size erhöhen?? also speicher habe ich massig :) :

    # Maximale Groesse eines Abfrage Ergebnisses, damit es gecached wird query_cache_limit = 1M # Gesamtgroesse des Cache query_cache_size = 16M
     
  17. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Ich bin am ball und werde das teste, das steht ganz oben auf meinem Zettel! Danke für den Hinweiß
     
  18. dernabel

    dernabel Well-Known Member

    Registriert seit:
    13. April 2009
    Beiträge:
    72
    Zustimmungen:
    0
    Es ist besser geworden, aber es ist nicht weg! jetzt ist es mal echt gering aber das schiesst auch oft schnell mal auf eine CPU Last von 20.00 auch wenn die Prozesse nichts auffälliges aufführen!

    [TABLE]
    [TR]
    [TD]CPU-Last im Durchschnitt:[/TD]
    [TD]0.63 (1 Minute) , 3.24 (5 Minuten) , 3.92 (15 Minuten)[/TD]
    [/TR]
    [TR]
    [TD]CPU Typ[/TD]
    [TD]Intel(R) Core(TM) i7 CPU 975 @ 3.33GHz , 8 cores [/TD]
    [/TR]
    [/TABLE]


    [TABLE="class: ui_table sortable, width: 100%"]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun
    [/TD]
    [TD]0.0 %[/TD]
    [TD]proftpd: (accepting connections)[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.0 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.1 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.1 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.1 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.2 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun
    [/TD]
    [TD]0.5 %
    [/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.6 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.8 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.8 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]wwwrun[/TD]
    [TD]0.9 %[/TD]
    [TD]/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D SYSTEMD -k start[/TD]
    [/TR]
    [/TABLE]


    [TABLE="class: ui_table sortable, width: 100%"]
    [TR="class: mainbody row1"]
    [TD][/TD]
    [TD]mysql
    [/TD]
    [TD]1.3 %[/TD]
    [TD]/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64 ...[/TD]
    [/TR]
    [TR="class: mainbody row0"]
    [TD][/TD]
    [TD]messagebus
    [/TD]
    [TD]0.0 %[/TD]
    [TD]/bin/dbus-daemon --system --address=systemd: --nofork --systemd-activation
    [/TD]
    [/TR]
    [/TABLE]
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden