У меня есть сайт сообщества около 12 000 пользователей (писать тяжелый), 100 одновременных пользователей max на одном VPS с 1 ГБ оперативной памяти. Нагрузка редко превышает 3, и реакция довольно хорошая.Оптимизация PHP, производительность сайта сообщества MYSQL
В настоящее время простой файловый кеш используется для хранения результатов запроса БД, чтобы облегчить нагрузку на БД, но веб-сайт все еще может замедлить работу более чем на 220 одновременных пользователей (тест нагрузки).
Как я могу узнать, что такое узкое место?
Я предполагаю, что БД прекрасно работает, поскольку кеш работает нормально, однако Disk IO может вызвать проблемы. Каждая pageload имеет около 10 включений и 10-20 запросов из БД или из кеша файлов, плюс много обработки php.
Я попытался использовать memcache вместо файлового кеша, но, к моему удивлению, тест загрузки, похоже, больше похож на кеш-файл.
Я планирую использовать альтернативный кэш PHP, но я до сих пор не совсем понимаю, как этот кэш недействителен. У меня есть singe index.php, который обрабатывает все запросы. Будет ли кеш хранить результат для каждого отдельного запроса? Будет ли он автоматически очищать кеш, если один из моих включит (или результат запроса из кеша) изменится?
Любые другие предложения по поиску узких мест (попробовали xdebug)?
Спасибо, Гамлет
Не могли бы вы привести пример запроса, который вы используете чаще всего? – Quassnoi