#кэширование #memcached #php
У меня VPS сервер. Кожу на php, в качестве базы использую MySQL. В последнее время очень нужно повысить пропускную способность сервака. Уже и так все кэшируется по файлам на жестком диске - это конечно повышает производительность в разы, но меня и этого теперь мало. Расскажите что эффективней использовать для этих целей? Именно для кэширования. Из соседнего поста я узнал, что есть: memcache для кэширования данных apc - для кэширования пхпшечки Но на сколько это эффективно, какие есть аналоги и что работает быстрее и надежней? Так же интересует установка, чтоб не запариваться и работало на всех серваках, хостингах.
Ответы
Ответ 1
это конечно повышает производительность в разы, но меня и этого теперь мало Для начала давайте определимся - чего вам мало? Вы проводили тесты, измерения и вам выдало - php код выполняется слишком долго, в результате чего вместо 1000 человек можно обслужить только 100? Надо ускорять там, где действительно это надо, а то получится - экономили, экономили, а оказалось на спичках экономим, хотя в кармане куча зажигалок. Memcache и APC предназначены для разных целей (данные и код, как вы уже заметили). Надо понимать, что обращение к PHP, если грубо, состоит из следующего: открыли соединение к серверу на определенном порту, определили какой файл должен исполняться интерпретатор прошелся по этому файлу (типа скомпилировал), отправил на выполнение php-скрипт начал свое выполнение, выполнил нужные действия, получил определенные данные, вернул данные клиенту Это если грубо, но смысл думаю ясен. Если больше всего тормозит п.3 - значит в первую очередь необходимо кэширование данных, Если п.2 - кэширование кода (дабы не интерпретировать каждый раз одно и тоже), либо перенос части функционала, например, на С/С++ Хотя может быть просто используется неоптимальный алгоритм? Или может оказаться, что PHP-код отрабатывает быстро, даже очень быстро, но все равно тормоза есть. повысить пропускную способность сервака Может вы все-таки упираетесь в сеть? Пропускная способность сети может слишком маленькая, или настройки сервера не оптимальны (например, выставлено небольшое количество возможных подключений?) В общем без конкретных тестов на узкие места трудно сказать что и как необходимо. Но ведь вопрос не в этом? Вопрос - что лучше? Ответ: memcache - кэширование данных, APC - кэширование кода. Что использовать? См. выше.Ответ 2
Используйте javascript-MVC фреймворки. Там можно закешировать все шаблоны, а данные будут приходить от RESTfull-сервера как JSON. В этом случае вы не будете париться о рендеринге шаблонов на стороне сервера. Это уменьшит нагрузку на файловую систему. Как сказали выше - Local Storage, кешируйте сами данные на стороне клиента. Memcache (хотя по мне лучше - Redis). Для кеширования результатов запросов и для хранения сессий. Меньше запросов к медленному MySQL и к файловой системе. APC для ускорения php-сервера. nginx вместо медленного Apache. Примерно так выглядело мое последнее нагруженное приложение
Комментариев нет:
Отправить комментарий