Ein paar Dinge fallen mir ein.
Opcode-Cache ist immer eine gute Idee. Ich bevorzuge http://eaccelerator.net/ gegenüber APC. Wenn Sie nicht mit APC entwickelt haben, ist der Versuch, es hinzuzufügen, fast immer schmerzhaft. Beschleuniger während nicht so schick scheint nur zu funktionieren.
Ein Reverse-Proxy ist auch eine gute Idee, aber Sie müssen die RAM-Auslastung beobachten. Ich finde, dass Apache 2.2 mit mpm-worker eine ganze Menge RAM alleine beansprucht. In Ihrem Fall würde ich etwas Leichteres wie Nginx empfehlen und Apache mit PHP als FASTCGI ausführen oder es einfach wie prozess lassen. Mit Varnish, Squid, Nginx usw. sollen statische Inhalte bereitgestellt, Benutzerverbindungen verwaltet und nur PHP-Anforderungen an Apache weitergeleitet werden, die Sie als Anwendungsserver behandeln.
Wenn Sie eine relativ neue Version von Mysql 5.1 verwenden, wie mindestens 5.1.24, haben Sie jetzt Zugriff auf langsame Protokolle von weniger als einer Sekunde. Ich würde long_query_time bei 1 oder 2 beginnen und es dann auf 0.5 senken, wenn Sie die wirklich langen in den Griff bekommen. Es gibt auch viele allgemeine Tuning-Informationen für MySQL im Internet, aber Sie haben nicht viel RAM. Haben Sie eine der Standardeinstellungen erhöht? Die meisten my.cnf-Standarddateien sind für die Verwendung von ca. 64 MB RAM konfiguriert. Zumindest würde ich den key_buffer von 16MB auf 64MB erhöhen.
Verwenden Sie zusätzlich Myisam- oder Innodb-Tabellen? Wenn Sie die Sitzung in der Datenbank beibehalten, möchten Sie die Sitzungstabelle in Innodb ändern (oder stattdessen als Cookie festlegen), anstatt eine Mysiam-Tabelle zu belassen, die das Sperren auf Tabellenebene anstelle des Sperrens auf Zeilenebene ausführt. Grundsätzlich ist jede Tabelle, die mehr als 20% Schreibzugriff auf 80% Lesezugriff hat, ein Kandidat für den Wechsel zu Innodb. Denken Sie daran, dass Sie die Größe des Arbeitsspeichers zwischen Myisam-Tabellen und Innodb-Tabellen ausgleichen müssen, da die Puffer für jede Tabelle separat konfiguriert werden.
Und zu guter Letzt würden weitere 512 MB RAM in Ihrem Setup viel bewirken, oder sogar weitere 512 MB VPS, um MySQL zu betreiben, wenn dies billiger oder ungefähr zum gleichen Preis ist. Ich würde mich tatsächlich zu einer zweiten Instanz neigen, da dies die verfügbaren Festplatten-E / A verdoppelt. Eines der Probleme mit VPS-Servern ist, dass Ihre E / A nicht vor anderen Personen auf demselben physischen Server geschützt ist.
Hmmm, mein Beitrag ist ein bisschen zerstreut, aber es gibt dir viele Orte, an denen du nachsehen kannst. Viel Glück.