Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Как построить эффективное кэширование

#кэширование #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. Примерно так выглядело мое последнее нагруженное приложение

Комментариев нет:

Отправить комментарий