Получи случайную криптовалюту за регистрацию!

Сложные веб-страницы должны генерироваться не более 1 секунды, | Mad Devs Channel

Сложные веб-страницы должны генерироваться не более 1 секунды, а иначе пользователь просто закроет ваш ресурс. Сегодня мы поговорим о том, как не потерять пользователей, создав сайт, который будет устойчивым к высоким нагрузкам.

Разделение и другие методы оптимизации запросов
Запросы стоит разделить, если они суммируются. Что позволит вам уменьшить общее время запроса. Для исполнения одних и тех же запросов не обязательно поднимать каждый раз новое соединение, так как это излишне нагружает сервер. Используйте повторно предыдущие соединения, которые не закрываются при завершении скрипта.

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

Мониторинг
Для мониторинга сайта можно использовать два сервиса:
TIG (Telegraf, Influx, Grafana) — базовый набор компонентов для быстрого развертывания системы мониторинга, который позволяет узнать, как используются ресурсы сервера, с какой скоростью работают отдельные узлы системы.
Яндекс.Танк – популярный и доступный инструмент для мониторинга, который позволяет проводить нагрузочные тестирования и анализ производительности веб-сервисов и приложений.

Важно отслеживать показатель TTFB. Если показатель хороший, это не всегда указывает на то, что данный сайт очень хорошо загружается. Но если вы видите плохое значение TTFB, это точно говорит о недостаточной скорости загрузки.

Полезно взглянуть на полный лог SQL-запросов. Нужно также проанализировать код на наличие самых медленных мест, а потом их внимательно рассмотреть. Стоит убрать лишние части кода.

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

Использование сети CDN
C одного домена можно параллельно загружать максимум шесть файлов, а CDN-сеть даёт более широкие возможности для загрузки файлов. Есть ещё один способ для более быстрой загрузки — уменьшить размер файлов и объединить их.

Денормализация
Метод, при котором мы можем намеренно привести структуру БД в состояние, не соответствующее требованиям нормализации. Для этого избыточные данные помещают туда, где они смогут принести максимум пользы. При использовании jsonb можно легко денормализовать данные и получать их все единоразово.

Кеширование
Позволяет снизить сетевой трафик. Но его нужно правильно настроить, если вы используете распределённую на несколько серверов инфраструктуру, и веб-сервер и БД находятся отдельно, кеш лучше хранить на веб-сервере.