
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам
Продолжаем рассматривать полезные на наш взгляд выступления с конференций.
Сегодня рекомендуем посмотреть доклад "ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам".
В докладе рассматриваются 5 основных проблем, которые можно встретить на любом проекте.
1 Проблемы с базой данных.
- Транзакции. Транзакции помогают сократить количество операций записи на диск (часто медленной). Например, возьмем совершенно стандартную ситуацию - импорт прайс листа от поставщика в интернет-магазине. Разбив все запросы на пачки по 1000 (условно) штук и обернув каждую пачку в транзакцию - можно добиться ускорения процедуры импорта за счет сокращения числа дисковых операций. Для диагностирования подобных проблем стоит смотреть в general.log и slow.log
- Индексы. Мало данных в базе - проблемы не наблюдаются так как все данные умещаются в оперативную память (buffer_pool и другие буфера). Как только объем данных увеличивается - СУБД все чаще ходит на диск. Соответственно падает производительность. По мере роста проекта, по мере добавления и изменения выполняемых запросов - необходимо соответствующим образом менять и индексы. Смотреть в slow.log и okmetr.io
- Стараться избегать запросов вида SELECT * - можем забить канал совершено ненужными данными. В каждом запросе лучше явно указывать какие данные мы хотим получить.
2 Проблемы с кодом.
- HTTP-API. Никогда не делайте вызов внешних API в рамках транзакции СУБД. Ставьте таймауты на любой внешний запрос. Старайтесь переводить обращение к АПИ в фоновые процессы (очереди). Кешируйте ответы.
- Cron. Используйте блокировки для исключения повторного запуска одного и того же скрипта. Подкрутите таймауты для таких скриптов.
3 Архитектура.
- Не используйте "голый" Apache, поставьте перед ним Nginx или используйте Nginx + PHP-FPM
- PHP-сессии лучше всего хранить в памяти, например, в redis или memcache
- Используйте HTTP-Cache, например Varhish
4 Сеть
- Используйте pg_bouncer (если у вас Postgres)
- Не парьтесь насчет time_wait сокетов
5 Человеческий фактор
- Не выкатывайтесь в пятницу
Комментарии