it-swarm.com.de

WordPress MySQL & PHP Performance

haben eine Website (www.americanbankingnews.com), die heute 40.000-50.000 Seitenaufrufe erhält. Es befindet sich derzeit auf einem dedizierten Quad-Core-Xeon-Server mit 8 GB RAM. Die Site wird von WordPress und MySQL (auf demselben Server) betrieben und ich verwende derzeit W3 Total Cache für das Seiten- und MySQL-Abfrage-Caching.

Leider scheint das nicht genug zu sein. Während der Stoßzeiten des Datenverkehrs erhalten meine Server einige HTTP 500-Fehler und Seiten, die nicht zwischengespeichert sind, werden langsam geladen.

Ich verwende derzeit keinen Xcache oder andere PHP Cache-/Beschleunigungs-Tools.

Gibt es zusätzliche Schritte, die ich unternehmen sollte, um die Leistung von MySQL und PHP zu optimieren? Oder sollte ich nach einem zusätzlichen Server suchen? Insbesondere würde ich mich für zusätzliche Vorschläge interessieren, um die Leistung von MySQL zu verbessern und ob Tools wie xcache in dieser Situation hilfreich sein könnten

4
Matthew Paulson

Hallo Matthew Paulson,

Ich sehe, dass Sie W3 Total Cache verwenden, aber Ihr Datenbank- und Objekt-Cache ist auf Festplatte eingestellt. Das Zwischenspeichern von Objekten und Ihrer Datenbank auf die Festplatte kann sich negativ auf die Leistung auswirken, insbesondere wenn Sie so viel Verkehr haben.

Weitere Informationen zu den Auswirkungen auf das Zwischenspeichern von Datenbanken und Objekten auf die Festplatte finden Sie in einem Artikel, den ich zumEinrichten des W3-Gesamtcachesgeschrieben habe. Der Autor des Plugins hat den Anweisungen in meinen Einstellungen zugestimmt .

Um die Vorteile des Zwischenspeicherns von Datenbanken und Objekten wirklich zu erkennen, müssen Sie einen PHP -Opcode-Cache wie APC verwenden. Sie können den Anweisungen zum Kopieren und Einfügen im Plugin FAQ folgen, um APC zu kompilieren und einzurichten. Wenn Sie unter Ubuntu oder Debian arbeiten, können Sie einfach den folgenden Befehl ausführen: apt-get apc-php5 to install.

Wie andere bereits erwähnt haben, erhalten Sie eine enorme Leistungssteigerung und können Ihre Site durch das Einrichten eines Reverse-Proxys mit Nginx erheblich vergrößern.

Ich gebe detaillierte Anweisungen zum Konfigurieren und Einrichten in meinemWordPress Performance Stack.Artikel.

Sie sollten auch einige der anderen Fragen und Antworten hier lesen. Es wurden viele gute Ratschläge zur Leistung und Skalierung gegeben.

Viel Glück bei Ihrer Suche. Das Verwalten Ihres eigenen Servers kann manchmal sehr anstrengend sein.

Bearbeiten

Um die Leistung zu demonstrieren, die Sie durch die Installation von Nginx als Reverse-Proxy erzielen können, stelle ich einen Apache-Benchmark-Test bereit, den ich gerade auf meinem Server ausgeführt habe:

x-wing ~: ab -n 1000 -c 80 http://wp-performance.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.Apache.org/

Benchmarking wp-performance.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx/0.8.54
Server Hostname:        wp-performance.com
Server Port:            80

Document Path:          /
Document Length:        3132 bytes

Concurrency Level:      80
Time taken for tests:   0.066 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      3605000 bytes
HTML transferred:       3132000 bytes
Requests per second:    15164.15 [#/sec] (mean)
Time per request:       5.276 [ms] (mean)
Time per request:       0.066 [ms] (mean, across all concurrent requests)
Transfer rate:          53385.52 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   0.6      1       3
Processing:     1    4   0.8      4       5
Waiting:        1    3   0.8      3       5
Total:          3    5   0.6      5       7

Percentage of the requests served within a certain time (ms)
  50%      5
  66%      5
  75%      6
  80%      6
  90%      6
  95%      6
  98%      6
  99%      6
 100%      7 (longest request)

Theoretisch ist es in der Lage, mehr als 15.000 Anfragen pro Sekunde zu bearbeiten. (Gleiches Netzwerk)

5
Chris_O

Viele ähnliche Fragen und Antworten: https://wordpress.stackexchange.com/search?q=mysql+optimize

Es kommt darauf an, Tools wie mysqltuner zu verwenden, um die Engpässe zu untersuchen, Protokolle auf Fehler und Speichernutzung zu überprüfen, PHP-Opcode-Caching zu verwenden, Post-/Seitenversionen zu löschen, um die Datenbank auf die Größe zu bringen usw.

2
markratledge

Hallo@ Matthew Paulson:

Möglicherweise stellen Sie die falsche Frage.

Bei Ihrem Datenverkehr möchten Sie may den Front-End-Cache mit nginx betrachten. Hier finden Sie Fragen und Antworten zu nginx auf der Website, viele relevante Artikel in einer Google-Suche sowie ein Plug-in, mit dem WordPress mit nginx auf wordpress.org verbunden werden kann. Zuletzt ein Artikel zur Installation und Konfiguration:

Wenn das nicht hilft oder Sie es aus irgendeinem anderen Grund nicht tun möchten, teilen Sie uns bittemit, welche Plugins Sie verwenden. Die meiste Zeit mit WordPress sind Leistungsprobleme nicht das offensichtliche, aber sie sind das Ergebnis einiger schlecht geschriebener Plugins.

1
MikeSchinkel

Haben Sie Einblick, was genau unter hoher Last zu einem Engpass wird? Es kann sich um eine andere Art von Ressource handeln (CPU-Auslastung, Aufrechterhaltung der Netzwerkverbindungen, unzureichender Arbeitsspeicher usw.).

Allgemeine Dinge:

  • opcode cache (kompilierten PHP Code im Speicher behalten) ist ein Muss;
  • sie scheinen Speicher zum Brennen zu haben, daher lohnt es sich, speicherbasierten Objektcache zu versuchen (W3TC unterstützt dies, sehen Sie sich das an). Es wird eine Menge Dinge beständiger machen und die Last von MySQL entfernen.
  • wenn es sich bei der Webserver-Software um einen Engpass handelt (Sie erwähnen nicht, was Sie ausführen, Apache?), sollten Sie nach alternativen Webservern (wie nginx) oder Reverse-Proxy (wieder - Sie haben Speicher für Ich habe gute Dinge über Lack gehört.
0
Rarst

Sie haben nicht gescherzt, sondern nur versucht, Ihre Website aufzurufen, und einen internen Fehler von 500 erhalten. Vielleicht können Sie die Anzahl der verwendeten Plugins verringern und sicherstellen, dass alle Bilder usw. optimiert sind, um die Seitengröße zu verkleinern, sodass sie weniger Bandbreite zum Laden benötigen und somit weniger Fehler auftreten.

Vielleicht möchten Sie auch in HIP HOP nach PHP suchen. Ich habe es nie implementiert, aber es wurde von den Facbook-Leuten als Open Source veröffentlicht, die nach dem Erstellen und Verwenden eine Reduzierung der Serverlast um etwa 30% erlebten. Grundsätzlich werden normale PHP-Dateien benötigt, in C++ - Binärdateien konvertiert und ausgeliefert.

0
user4511

Die Hardware, die Sie haben, sollte den angegebenen Datenverkehr problemlos bewältigen können (als Benchmark, eine Site, auf der ich Spitzenwerte von ~ 40.000 täglichen Seitenaufrufen auf einem 2-GB-Slicehost-VPS erreiche) - das deutet also auf einen groben Fehler hin.

Wie andere bereits gesagt haben, müssen Sie als Erstes verstehen, wo sich das Problem befindet bzw. befindet.

  1. Welche Informationen gibt top Ihnen, wenn Sie unter Last sind? Verwenden Sie Swap-Speicher, nimmt die Auslastung zu, wenn Sie nach Speicher und CPU-Auslastung sortieren, was sind die wichtigsten Prozesse?

  2. Können Sie so etwas wie munin installieren, um einen Einblick in Ihren Server zu erhalten?

  3. Angenommen, Sie betreiben Apache. Wie ist es konfiguriert? Die wichtigsten Dinge, die Sie wissen sollten, sind:

    • Auszeit
    • Bleib am Leben
    • MaxKeepAliveRequests
    • KeepAliveTimeout
    • (vorausgesetzt, Sie führen Apache im Prefork-Modus aus) - Alle Konfigurationszeilen im Prefork-Abschnitt Ihrer Apache-Konfigurationsdatei.
  4. Wenn Sie diesen Befehl ausführen, gibt ps -ylC httpd --sort:rss einen Hinweis darauf, wie viel Speicher von Apache-Prozessen verwendet wird.

  5. Installiere mtop und mysqltuner - soweit ich mich erinnere, sind beide über apt-get verfügbar. Sie sollten auch die langsame Protokollierung von MySQL einschalten - Sie müssen normalerweise nur eine Zeile in Ihrer my.cnf-Datei auskommentieren.

    • mit mtop können Sie in Echtzeit sehen, welche SQL-Abfragen (langsam) ausgeführt werden. Mit mysqltuner erfahren Sie, welche Änderungen Sie an Ihrer MySQL-Konfiguration vornehmen müssen
  6. Was passiert, wenn Sie, wie von anderen empfohlen, Plugins während einer geschäftigen Zeit deaktivieren? Beschleunigt die Website? Welche Plugins hast du installiert?

  7. Haben Sie eine Vorstellung davon, wie viel Verkehr Sie in Stoßzeiten haben - z. B. 4000 Seitenaufrufe in 10 Minuten?.

Mit Informationen aus diesen Quellen haben Sie eine bessere Vorstellung davon, was falsch läuft.

0
anu

ich weiß nicht, welche Programme Sie installiert haben, aber vielleicht ist es ein APC-Zend-Problem:

http://www.ivankristianto.com/web-development/server/alternative-php-cache-apc-not-compatible-with-zend-optimizer/1726/

Dieses Problem tritt in meinem VPS auf, nachdem ich den alternativen PHP Cache (APC) installiert habe. Außerdem habe ich Zend Optimizer bereits auf demselben VPS installiert. Nachdem ich APC installiert habe, zeigt mein WordPress-Blog seltsames Verhalten. Manchmal habe ich Fehler 500 Interner Server Fehler, und manchmal habe ich PHP schwerwiegenden Fehler.

0
Ünsal Korkmaz