Сайт падает под нагрузкой, как уменьшить давление на VPS?
У меня была похожая история — VPS с парой ядер и 2 ГБ ОЗУ при росте трафика начинал подтормаживать и даже падать. Fail2ban и limit_req в nginx частично помогают, но сами по себе не спасают от больших всплесков. Ограничение на количество соединений с одного IP особенно если много «плохих» запросов — быстро обходят, IP меняют, поэтому толку мало. Капчи и всякие редиректы дают небольшой эффект, но задержки остаются, особенно с нормальными пользователями.
Cloudflare free — неплохой вариант для отброса мусора, но понятно, что хочется решать на своём VPS. У меня помогла более агрессивная настройка throttling и коннекшен трекинга, плюс мониторинг соединений через iptables или nftables. Иногда делал простейший прокси-слой на nginx с кешированием для статики и редких API, чтобы снизить нагрузку на основной сервер.
Настоятельно рекомендую смотреть логи с разбивкой по времени и отслеживать latency, ошибки и таймауты прямо из nginx и systemd journal. Это сразу показывает узкие места. Ещё можно подключить мониторинг cgroup ресурсов по процессам, чтобы понять, что именно съедает CPU или память.
Если бюджет ограничен, лучше сначала отстроить правильный throttling и connection tracking, а потом уже думать про более сложные схемы с прокси и фильтрами. И обязательно стоят периодические рестарты сервисов по расписанию, чтобы снять утечки памяти. У меня именно такой подход сработал, VPS теперь не виснет даже при приличном пике, хотя и далеко от идеала.