@ReFeRy

Стоит ли пытаться воткнуть кэш везде, где только можно (memcached, проект на php)?

Есть работающий сайт, контентный проект с UGC. Много действий пользователей, много текстового контента. Сайт работает на одном сервере, основное хранилище информации mysql, для кэширования используется memchache.

Соотношение нагрузки таково:
MySQL: 101 запрос в секунду, 2 Гб трафика в час
Memcache: 40 запросов в секунду, 600 Мб трафика в час
Трафик: 40к уников, 350к просмотров в сутки (и ещё много действий через AJAX).

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

P.S. Сайт написан на голом php, общение с mysql через велосипед. В кэш отдавал пока те запросы, которые перебирают большие таблицы, либо запрашиваются сотни/тысячи раз между изменениями данных.
  • Вопрос задан
  • 451 просмотр
Пригласить эксперта
Ответы на вопрос 3
VELIK505
@VELIK505
Руководитель департамента profitcentr.com
Соотношение нагрузки таково:
MySQL: 101 запрос в секунду, 2 Гб трафика в час
Memcache: 40 запросов в секунду, 600 Мб трафика в час

Это вообще неочём... Я бы даже сказал это мизер...
Лучше оптимизировать тяжелые sql запросы если как таковые имеются.
Ответ написан
@RidgeA
1. Кешировать можно все, что позволяет кешировать бизнес-логика. Мизерный прирост в 10-ти местах может дать суммарно лучше прирост, т.к. эти мизерные запросы не будут лишний раз насиловать базу и база сможет быстрее обслуживать запросы.
2. Можно кешировать страницы и http запросы на уровне веб-сервера, до php запрос не должен дойти вообще - это может дать прирость общей производительности.
3. Если это что-то вроде блога, где посты меняются не так часто, а то и вообще не меняются, можно основные странички сгенерировать в уже готовый html и отдавать их как статику через web-сервер. Менять эти странички на серваке в случае какого-либо изменения.
Ответ написан
akubintsev
@akubintsev
Опытный backend разработчик
Я понимаю, что серебряной пули не бывает, но может кто-то из своего опыта скажет - стоит ли пытаться переложить нагрузку на кэш в тех случаях, когда экономия выйдет мизерной? Например, сейчас кэш практически не используется в блогах, комментариях, личных сообщениях - там очень много обновлений, выгода от введения кэша будет мизерной, а кодить много.


Не стоит.
Управление кешем сложная задача. А если кешировать всё подряд, то легко получить неконсистентное состояние и понять где беда будет не просто.
Ответить на ваш вопрос только обвесив сперва весь проект метриками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы