Назад | Перейти на главную страницу

APC (ускоритель php). В каких ситуациях я должен это использовать?

Так что у меня только небольшой vps. Я установил apc, который ускорил обычные страницы на 20% - 30%. Я читал о memcached и пришел к выводу, что я могу использовать apc для того же (кэширование объектов из результатов базы данных), если я не распространяю по другим серверам. Поскольку у меня только один сервер, apc будет столь же полезен для кеширования в памяти.

Я все еще нахожусь в режиме разработки, и я уверен, что трудно сказать, что было бы лучше для рабочего режима. Дело в том, что мои запросы к базе данных кажутся довольно быстрыми (между .0008 и .02). Ни одна из моих страниц не требует интенсивного использования базы данных.

Будет ли мне полезно кэшировать результаты в памяти? Если сейчас база данных работает нормально, возникнут ли проблемы позже? Кроме того, подключается к базе данных вообще что-то, что требует скорости (даже если я кэширую большинство своих запросов, каждая страница должна иметь небольшое взаимодействие с базой данных для данных сеанса). Итак, в основном, если у меня есть ограниченная оперативная память и одна машина, будет намного быстрее использовать apc, а не просто отключать кеширование базы данных?

Идеи?

Ваши запросы к базе данных теперь выполняются быстро. Но масштабируются ли они? Вы пробовали добавить реальный объем реальных данных, а затем повторить попытку? Один этот запрос отлично работает с 8 участниками, но ужасно с 400 000 участников?

Кэшировать или нет - полностью зависит от приложения и ситуации. Если вы ожидаете значительного роста нагрузки и узким местом является ЦП, то кеширование поможет вам, а если, с другой стороны, узким местом является оперативная память и вы используете своп, это навредит вам.

Я на самом деле не занимаюсь кешированием или не кешированием справедливости обсуждения, но это самый простой вопрос, который вам нужно задать себе.

Сложно сказать, где можно найти наилучший баланс. Кэш объектов APC обычно используется для хранения объектов, воссоздание которых занимает относительно много времени, например наборы результатов базы данных, которые слишком велики для кэширования собственным кешем запросов базы данных или для временных структур данных, которые было бы неплохо сохранять между запросами PHP.

Ваши запросы к базе данных кажутся достаточно быстрыми. Если ваша скорость попадания в кеш запросов находится в диапазоне> 95%, значит, большинство результатов уже обслуживается из памяти, и кеш APC мало поможет. Если вы выполняете какую-либо обработку результатов db, то может быть полезно сохранить этот результат в памяти.

Подключение к базе данных является относительно дорогостоящим, поэтому рекомендуется повторно использовать подключение, сделав его одноэлементным. Некоторые абстракции базы данных, например, в Zend Framework, задерживают фактическое соединение до тех пор, пока оно действительно не понадобится.

Трудно дать конкретный совет, поскольку преимущества сильно зависят от вашего приложения и вашего сервера. Я бы посоветовал использовать профилировщик, такой как Xdebug или Zend Debugger, чтобы точно узнать, куда уходит ваше время. Измерение - это знание.