У меня есть умеренно мощный VPS (четырехъядерный Xeon, 3 ГБ оперативной памяти, ssd) под управлением Ubuntu 12.10, PHP 5.5.8 и включен кеш Opcode.
Я использую memcached, opcode cache и mod_pageSpeed.
Я слежу за приложением с помощью New Relic.
Проблема в том, что независимо от того, что я пробовал, увеличивая лимиты памяти, размеры кеша и т.д., я не могу получить время ответа на запрос ниже 80 мс.
В базе данных работает Percona, которая тратит около 40 мс на запрос, а PHP тратит около 40 мс на запрос.
Все запросы обслуживаются из скомпилированного кеша OpCode, поэтому я не понимаю, откуда берется вся задержка.
Что мне не хватает?
Спасибо. Заранее извиняюсь, если я пропустил важную информацию, все может быть предоставлено по запросу.
Кэш опкодов не «компилирует, не выполняет и не кеширует результат». По первому запросу ваш PHP-код компилируется в байт-код, этот байт-код сохраняется, а затем выполняется. При последующих запросах выполняется сохраненный байт-код. Без кеша кода операции код PHP будет компилироваться в байт-код во время каждого запроса.
Если вы хотите кэшировать вывод, сгенерированный вашей программой, и обслуживать его, а не выполнять вашу программу по каждому запросу, вам необходимо изучить дополнительные методы кэширования.