it-swarm.com.de

WordPress MySQL-Leistung

Ich habe eine Website (www.americanbankingnews.com), die heute 40.000-50.000 Seitenaufrufe erzielt. 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.

3
Matthew Paulson

Haben Sie die Plugins, Vorlagen usw. Ihrer WordPress -Installation bereits gründlich überprüft, bevor Sie sich mit der Maschine befasst haben?

Ich habe einen Client im Bereich von 30 bis 40 KBit/Tag auf einem gemeinsam genutzten Host, bei dem ein großer Teil der Site eine Authentifizierung zum Lesen erfordert (daher können wir kein vollständiges "statisches" SuperCaching durchführen ), und sie haben noch keine wesentlichen Leistungsbeschwerden.

Wenn Sie einen dedizierten Computer mit nur ca. 10.000 Besuchen durcharbeiten, ist möglicherweise mehr im Gange als nur ein unterlasteter Server.

3
Su'

APC (Alternativer PHP Cache) würde helfen, CPU-Zyklen zu sparen, da bereits kompilierter PHP Code zwischengespeichert wird. Das bedeutet, dass Ihre PHP - Dateien bei jedem Seitenaufruf nicht zuerst kompiliert und dann von der virtuellen Maschine ausgeführt werden, sondern direkt zur virtuellen Maschine PHP weitergeleitet werden und die Leistung erheblich gesteigert wird (wie ich gesehen habe) Leistungssteigerung von 2 auf 12 mal).

Der nächste Schritt wäre die Optimierung von MySQL. Offensichtlicher Schritt ist die Überprüfung, ob Sie InnoDB verwenden oder nicht. Wenn Sie den buffer_pool_size von InnoDB auf etwa 90% Ihres RAM erhöhen, wird das MySQL-Speicher-Dataset, mit dem es funktioniert, direkt im RAM gespeichert, sodass die Festplatte IO so weit wie möglich vermieden wird.

Idealerweise würden Sie jedoch versuchen, alle Ihre Seiten zwischenzuspeichern (ich nehme an, Sie haben nicht so viele neue inhaltsbezogene Dinge pro Tag veröffentlicht).

Das erfordert wahrscheinlich etwas Arbeit (oder es gibt einen WordPress - Mod, ich bin mir nicht sicher, weil ich mit WP und seinen Plugins nicht so vertraut bin). Das Zwischenspeichern Ihrer Inhalte würde die Belastung Ihrer Datenbank verringern. 40.000 - 50.000 Aufrufe pro Tag bedeuten eine hohe Lesegeschwindigkeit, daher sollten Sie das Lesen und nicht das Schreiben optimieren.

Möglicherweise möchten Sie auch zu nginx wechseln, anstatt bei Apache zu bleiben und PHP FPM mit nginx zu verwenden. Das sollte Ihre Leistung um ein Vielfaches steigern.

Ohne zu bemerken, was Ihren Server tatsächlich belastet (ich vermute, dass Apache eine Menge Prozesse erzeugt, die häufig auf MySQL zugreifen), sind dies die einzigen Dinge, die an dieser Stelle in den Sinn kommen.

2
N.B.

Für eine stark frequentierte Site sollten Sie alle MySQL-Puffer auf den jetzt vorhandenen Inhalt abstimmen. Unabhängig von der Version von WordPress die Konfiguration der MySQL-Ebene kann berechnet werden .

Wenn Sie über InnoDB-Daten verfügen, ohne innodb_file_per_table zu aktivieren, Sie müssen InnoDB bereinigen, indem Sie jede Tabelle in ihren eigenen physischen Tabellenbereich segmentieren . Es ist möglich, anständiges MySQL-Tuning durchzuführen auch wenn Sie eine eingeschränkte Hardware haben . Es gibt viele Szenarien für solche InnoDB-Optimierungen .

IMHO können Sie keine guten Einstellungen für my.cnf planen, ohne die zu konfigurierende Datenmenge zu kennen. Sie müssten regelmäßig einen aktuellen Datensatz aus der Produktion in eine Staging-Umgebung laden, Optimierungen durchführen und die zu konfigurierenden Zahlen in der Datei my.cnf des Produktionsservers bereitstellen.

1
RolandoMySQLDBA

Möglicherweise möchten Sie auch überprüfen, ob Ihr Caching korrekt ausgeführt wird. Ich habe mir Ihre Homepage angesehen und mir diese Punkte ausgedacht -

  1. die Größe der meisten Thumbnails wird von einem PHP-Skript geändert und nur über Ihren Server bereitgestellt. Sie hätten versuchen können, diesen Aufwand zu sparen.
  2. Wenn Sie wiederkehrende Besucher haben (was bei Inhalten der Fall sein sollte), müssen Sie Browser-Side-Caching implementieren, um Anforderungen an Ihren Server zu reduzieren.
  3. Sie führen eine Tonne Javascripts aus (Anzeigen, Analysen usw.). Können Sie sie zurückstellen und sicherstellen, dass ihre Js auch zwischengespeichert werden?.
0
Prasad Ajinkya