Tipps zur Leistung des LAMP-Servers [geschlossen]

11

Welche Leistungstipps können jemandem angeboten werden, der einen LAMP-Server betreibt?

In dem Fall, dass etwas verteilungsspezifisch ist, ziele ich auf Debian ab.

Unkwntech
quelle

Antworten:

26

Es hängt wirklich von Ihrer Arbeitsbelastung ab.

  • für den L- Teil

    • viel Gedächtnis bekommen,
    • Wenn Sie über 4 GB gehen können, gehen Sie auf 64 Bit.
    • Für Partitionen, in denen Ihre Inhalte, Protokolle und MySQL-Daten Mount-Optionen verwenden: noatime, nodiratime.
    • Verwenden Sie separate physische Laufwerke / RAID-Sets. Bewahren Sie SQL-Daten, Protokolle und Inhalte, die Sie bereitstellen, idealerweise auf einer separaten Spindel auf.
  • für den A- Teil Ihres Stacks - nun, vielleicht möchten Sie ihn vollständig durch nginx oder lighthttpd ersetzen oder Apache für dynamischen Inhalt verlassen und einen separaten Server (wie diese beiden oder mathopd ) für statischen Inhalt haben. Schauen Sie hier für weitere Optionen. Wenn Sie sowohl Apache als auch einen anderen Server auf derselben Box ausführen möchten, ist eine zweite IP-Adresse hilfreich. Um die Latenz für den Endbenutzer zu verringern, verwenden Sie http / 1.1 mit Keep-Alive. Erwägen Sie die Verwendung eines CDN für statische Inhalte.

  • Für den M- Teil Ihrer Lampe werfen Sie einen Blick auf mysqlperformanceblog . von oben:

    • langsame Abfragen protokollieren,
    • genug Gedächtnis geben,
    • Erwägen Sie die Verwendung von innodb.
    • Wenn Sie viel Text suchen müssen, verwenden Sie Sphinx und haben Sie einen Stapeljob, der den Index neu erstellt.
    • Ziehen Sie in Betracht, Abfragen zu beenden, die länger als XYZ Sekunden dauern. Es ist besser, 1% der Benutzer zu verärgern, als die gesamte Website in der Spitzenzeit herunterzufahren. Aber das hängt wirklich davon ab, ob Sie Bargeldtransaktionen abwickeln oder schöne Bilder zeigen.
    • Verwenden Sie memcached, wenn Sie können, um das Ergebnis teurerer SQL-Abfragen zwischenzuspeichern. Denken Sie daran, den Cache ungültig zu machen, wenn Sie den Inhalt von SQL ändern. Auf der anderen Seite habe ich ziemlich wenige Sites, auf denen alle Daten bequem in den Speicher passen, und dafür ist MySQL blitzschnell und es ist kein zusätzlicher Cache erforderlich.
  • für P.

    • Legen Sie das Ausführungszeitlimit für Skripte fest.
    • Erwägen Sie die Verwendung eines PHP-Beschleunigers / Opcode-Cache. Ich war ziemlich zufrieden mit xcache , aber ich benutze es jetzt nicht.
    • Wenn Sie eine CPU-intensive Verarbeitung haben, speichern Sie die Ergebnisse im Cache und speichern Sie sie in SQL oder zwischengespeichert

Nicht wirklich ein Leistungstipp, aber machen Sie Offsite-Backups. Ja wirklich.

pQd
quelle
1
Wenn ich das hinzufügen darf, habe ich kürzlich über sichere Backups mit Push- und Pull-Strategien über Amazon S3 gebloggt. Nicht für Bankdaten geeignet, aber alles, was Sie amzon anvertrauen, sollte in Ordnung sein. logaholic.de/2009/05/21/…
Karsten
Ich habe diesen Blog-Beitrag tatsächlich bemerkt, bevor du ihn kommentiert hast; -]. sowieso nett. Sie können Ihr Backup jederzeit verschlüsseln, um es sicherer zu machen.
pQd
3

Ich empfehle wirklich, MySQL und Apache / PHP auf zwei verschiedenen Computern zu trennen.

Zum Beispiel hatte ich eine Maschine (C2D E6600), die immer auf 2,0 und über dem Lastdurchschnitt anstieg. Ich habe MySQL auf einen zweiten Computer (P4C 3Ghz) gestellt und danach haben beide Lastdurchschnitte 0,2-0,3 nicht überschritten. Also bin ich von einer sehr langsamen Site zu einer schnellen Site mit zwei Servern mit viel Leistungsspielraum gewechselt.

Antoine Benkemoun
quelle
guter Punkt. Ich kann nur spekulieren, dass Ihr Engpass die Reaktionsfähigkeit des E / A-Subsystems / Laufwerks gewesen sein könnte. Vielleicht könnte dann auch das Trennen von Daten auf zwei verschiedenen Laufwerken / mit einem feinen Festplattencontroller den Trick tun. Trotzdem ist mehr Speicher und mehr CPU immer gut, aber dann gibt es auch mehr mögliche Fehlerquellen.
pQd
Ich bin mir nicht sicher, ob es sich um Festplatten-E / A handelt, da die meisten (sagen wir 90%) SQL-Treffer zwischengespeichert wurden. Ich habe über CPU-Kontextwechsel nachgedacht, weiß aber nicht, ob dies tatsächlich eine wichtige Rolle spielen kann.
Antoine Benkemoun
1

Für den P-Teil könnten Sie das Opcode-Caching mit zB APC in Betracht ziehen . Man könnte auch mod_fastcgi mit PHP anstelle des Standardmod_php in Betracht ziehen .

Karsten
quelle
Ich mag eAccelerator wirklich. Es bietet die beste Leistung für meine Websites.
TheHippo