запросов за 5 минут.
Основная архитектура у него 4 app сервера + 1 db (балансеры, waf и все такое не важно).
Узким местом является php-fpm. Как только начинается более менее умная ddos атака, с тонной разных ip адресов, пулы забиваются под ноль, с учетом того, что max_children установлено 4500. В рабочем состоянии php-fpm выжирает около 3200к процессов.
Пока все действия по смягчению атаки пройдут, это минут 5-10. То есть N пользователей страдает от 5ХХ ошибок.
В связи с этим есть вопрос, вообще такое количество max_children - это нормальная практика? Я ничего похожего в гуглах не нашел. Есть ли какие то советы, кроме как сменить тип пула с динамики на статику и автоскейлинг настроить?
И зачем 3200к процессов? Сколько у тебя ядер проц?
а кто сказал что "php-fpm узкое место" ? узкое место тут код на php.
автоскейлинг - отличный деньгожор вам нормальный WAF видимо нужен
К сожалению я тоже только вчера увидел эти цифры. Со вчерашнего дня 32 ядра, модель процессора не помню. Aws 6x что то там, чуть позже точный тариф могу сказать
С этим проблема. Он как бы есть, но из за некоторых причин временно недоступен. Подключён awa shield advanced
Значит надо искать аналоги
Он будет, просто чуть позже, когда инфраструктура будет готова
max_children = (average PHP script execution time) * (PHP requests per second)
Ну раз ддос это проблема, то пора
Это факт, но на данный момент я хочу разобраться с php fpm
Изучу, спасибо
Прочитайте всю ветку, я на все эти вопросы ответил с избытком
Прочитал. Бороться с атакой на исчерпание ресурсов ресурсами - это интересная идея, но практически бесполезная. Вам нужен waf, а не тюнинг пхп. Как разница, сколько вы набьете потоков пхп, если у атакующего масса ресурсов и ему их дешево выбивать? Трафик вообще не должен до вас доходить. Увеличение очереди и числа потоков - ведет к увеличению латенси и отвалу юзеров по нему. Это не говоря о последствиях, ну разошьете вы пхп, ок - база упадет. Или коннекты кончатся. Или сокеты.
Вы все верно подметили, но все же я хочу изначально разобраться, что происходит с php fpm, почему такое дикое количество дочерних процессов и почему без них он не работает. Исходя из реальных формул, выставлять нужно max_children * memory_limit исходя из RAM сервера. К сожалению я никак не могу сейчас повлиять на WAF. Вообще. Совсем. Так что пытаюсь начать фиксить то, с чем можно работать.
Обсуждают сегодня