Ответ
Максимальная нагрузка, с которой я работал — около 50k активных пользователей в час, с пиковыми значениями до 1.5k RPS.
Оптимизации:
- Кеширование API-запросов (React Query)
- Ленивая загрузка компонентов и чанкинг (
React.lazy) - CDN для статики (например, через Cloudflare)
- Дебаунс для поисковых запросов
Пример оптимизации RPS:
// Дебаунс поиска
const debouncedSearch = _.debounce((query) => {
fetchResults(query);
}, 300);
Метрики мониторились через Sentry + Grafana.
Ответ 18+ 🔞
Ну и вот, представляешь, сижу я как-то на проекте, который внезапно стал популярным, как шаурма в три часа ночи. И тут — бац! — нагрузка под 50 тысяч живых пользователей в час наваливается, а пики запросов так вообще до полутора тысяч в секунду доходят. Ебать мои старые костыли, я чуть со стула не упал! Удивление пиздец, честно.
Ну, а что делать? Пришлось мозги включать, блядь. Стал всё оптимизировать, как одержимый.
Что я там накрутил, чтобы всё не легло:
- Кеширование запросов. Взял React Query, чтобы каждый чих в API не дергать. Зачем сто раз одно и то же грузить, если можно один раз засунуть в память и потом оттуда тырить? Логика же, ёпта.
- Ленивая загрузка. Компоненты тяжелые, как чемодан без ручки, —
React.lazyв помощь. Пусть грузятся только тогда, когда они реально нужны, а не все скопом при старте. Чанкинг — наше всё. - Статику на CDN. Картинки, скрипты — всё это погнал через Cloudflare. Пусть летят к пользователям с ближайшего сервака, а не плетутся через полпланеты.
- Дебаунс для поиска. А то наш народ такой — букву вбил, уже результат хочет. Чтобы сервер не ебал сотню запросов на одно слово, поставил задержку. Три сотки миллисекунд — и нормально.
Вот, например, как поиск приструнил:
// Дебаунс поиска
const debouncedSearch = _.debounce((query) => {
fetchResults(query);
}, 300);
Сидит теперь пользователь, печатает, а запрос улетает только когда он хоть немного остановится. Красота, блядь.
И конечно, без мониторинга — никуда. Подключил Sentry, чтобы ловить ошибки, которые проскочили, и Grafana, чтобы на графики красивые смотреть и понимать, где сейчас система пыхтит, а где уже на пределе. А то без этого — как в тумане, волнение ебать, терпения ноль ебать. В общем, выкрутились.