Несколько вещей приходят на ум.
Кэш кода операции всегда хорошая идея. Я предпочитаю http://eaccelerator.net/, чем APC. Если вы еще не разрабатывали APC, попытка добавить его почти всегда является болезненной. Eaccelerator, хотя и не так, как кажется, просто работает.
Обратный прокси-сервер также является хорошей идеей, но вам нужно следить за использованием оперативной памяти. Я нахожу Apache 2.2 с mpm-worker, чтобы занимать достаточное количество оперативной памяти самостоятельно. В вашем случае я бы порекомендовал что-то более легкое, например, Nginx, и запустил Apache с PHP как FASTCGI или просто оставил это как процесс. Идея использования Varnish, Squid, Nginx и т. Д. Состоит в том, чтобы они обслуживали статический контент, обрабатывали пользовательские соединения и передавали только запросы PHP в Apache, который вы рассматриваете как сервер приложений.
Если вы используете довольно свежую версию Mysql 5.1, как минимум 5.1.24, у вас теперь есть доступ к медленным журналам длительностью менее секунды. Я бы начал long_query_time с 1 или 2, а затем снизил бы его до 0,5, так как вы получаете контроль над действительно длинными. В сети также много общей информации о настройке Mysql, но у вас недостаточно оперативной памяти. Вы увеличили какие-либо настройки по умолчанию? Большинство файлов my.cnf по умолчанию настроены на использование около 64 МБ ОЗУ. По крайней мере, я бы поднял key_buffer с 16 МБ до 64 МБ.
Кроме того, вы используете таблицы Myisam или Innodb? Если вы ведете сеанс в БД, вам нужно изменить таблицу сеансов на Innodb (или вместо этого сделать ее cookie), а не оставлять ее в таблице Mysiam, которая выполняет блокировку на уровне таблицы, а не блокировку на уровне строки. По сути, любая таблица, которая более чем на 20% пишет при чтении на 80%, является кандидатом для перехода на Innodb. Помните, что вам необходимо сбалансировать объем оперативной памяти между таблицами Myisam и таблицами Innodb, поскольку буферы для каждой из них настраиваются отдельно.
И, наконец, еще 512 МБ ОЗУ будут иметь большое значение в вашей установке или даже 512 МБ VPS для запуска Mysql, если это дешевле или примерно по той же цене. Я бы на самом деле склонялся ко второму экземпляру, потому что это удвоит доступный дисковый ввод-вывод. Одна из проблем с серверами VPS заключается в том, что ваш IO не защищен от других людей на том же физическом сервере.
Хм-м-м, мой пост все рассыпан, но дает вам много мест для поиска. Удачи.