
Wir haben eine Website auf einem dedizierten Server. Hier sind die Servereinstellungen:
- OriginalIntel, Intel (R) Core (TM) i5-2400[email geschützt]
- Version Plesk v10.3.0_build1012110629.18 os_Ubuntu 10.04
- Betriebssystem Linux 2.6.38.2-xxxx-std-ipv6-64
- SpeicherTotal 16 Gb
Diese Internetseite (http://www.bobcat.pro) ist eine E-Commerce-Site mit 18.000 Kategorien und 300.000 Produkten. Alles läuft auf PHP5/MySQL.
Wie Sie beim Surfen sehen, dauert die Anzeige der Seiten 5 Sekunden (oder mehr), was zu lange ist. Ich suche nach einer Möglichkeit, die Anzeige zu verkleinern, die mit der Installation unseres Servers kompatibel ist.
Ich habe Varnish verwendet, aber es hat zu viele Probleme gegeben, um es noch einmal zu versuchen. Was empfehlen Sie? Ist das Modul page_speed google für Apache 2 eine gute Lösung?
Antwort1
Varnish ist wahrscheinlich die richtige Lösung für Sie. Sie können jedoch auch andere Dinge verwenden.
Versuchen Sie es mit einem der folgenden Mittel:
Diese Lösungen würden den gesicherten Zugriff für Ihren Apache-Prozess beschleunigen und den Datenbankzugriffs-Overhead für Seiten beseitigen.
Ich würde Ihnen jedoch trotzdem empfehlen, eine Frage zu den Problemen zu stellen, die bei der Implementierung von Varnish aufgetreten sind. Vielleicht lassen sich diese lösen, da Varnish bei den meisten Leuten normalerweise gut funktioniert.
Antwort2
Die Anbieter der E-Commerce-Anwendung können diese Frage am besten beantworten.
Oberflächlich betrachtet sieht es so aus, als ob eine Art Cache-Kontrollheader für die HTTP-Antworten benötigt wird – ein „Expires“-Header oder ein „Etag“. Sie möchten diese jedoch nicht unbedingt überall hinzufügen, da sonst etwas kaputt gehen könnte, wo der Benutzer wirklich eine neue Ansicht benötigt, anstatt auf einen Cache zuzugreifen.
Eigentlich ist es ziemlich kriminell, dass die E-Commerce-Anwendung diese Header nicht standardmäßig anpasst (die Anwendung weiß am besten, wann der Cache „veraltet“ ist). Ich würde nach einer anderen suchen.
Gemessen an der Zeit, die für eine einzelne Anfrage benötigt wird, scheint die Anwendung außerdem nicht für die Anzahl der Kategorien und Produkte geeignet zu sein, die Sie ihr zumuten. Sie führt wahrscheinlich einige SQL-Abfragen durch, die „Tabellenscans“ (viele Festplatten-E/A) beinhalten, oder alternativ einige komplexe Abfragen, die sehr große Arbeitssätze im Datenbankspeicher beinhalten (z. B. Sortieren von 300.000 Datensätzen). Indizes in der MySQL-Datenbank können diese Probleme manchmal lösen, aber auch hier wäre es besser, wenn diese beim Installationsverfahren für die Anwendung hinzugefügt würden, da man zuerst wissen muss, welche Abfragen die Anwendung wahrscheinlich ausgeben wird, bevor man die Datenbank für sie optimieren kann. Ein weiteres Zeichen dafür, dass Sie die falsche E-Commerce-Anwendung für diese Aufgabe haben.