ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам
Продолжаем рассматривать полезные на наш взгляд выступления с конференций.
Сегодня рекомендуем посмотреть доклад "ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам".
В докладе рассматриваются 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 Человеческий фактор
Не выкатывайтесь в пятницу
Продукты
Наши разработки упрощают и ускоряют запуск проектов при сохранении качества