169 похожих чатов

Господа, может подскажите, куда копать. Есть бэк на Ларе (nginx +

php-fpm), который коннектится с Постгресс базой на другом сервере и делает запросы к другому внутреннему Апи, из которого тоже получает данные.
Вчера в один прекрасный момент PHP начал висеть.

Стал разбираться - количество соединений с базой стало превышать 100 и пошли ошибки в Постгресс базе:
FATAL: terminating connection due to administrator command

увеличил лимит соединений до 300, лог ошибок БД перестал заполняться, но PHP не полегчало

в логе php-fpm сегодня пошли ошибки вида
server reached pm.max_children setting (50), consider raising it

пробовал увеличить pm.max_children setting до 100 - не помогло

в логе nginx'а на все эти вещи ошибки
upstream timed out (110: Connection timed out) while reading response header from upstream

По access-логам nginx'а посмотрел количество запросов - в момент когда база упала всплеска запросов нет.

Попробовал посмотреть как выполниться файлик с кодом <?php echo 'ok'; - он то миллисекунд обрабатывается, до 20+ секунд.

Насколько я понимаю, бэк на Ларе где то стал медленно работать, и вешать таким образом весь PHP-код?
Бэк на двух серверах, а перед ними ещё балансер стоит, но вряд ли дело в балансере, т.к. картинки в любом случае быстро отдаются, а PHP висит.

20 ответов

63 просмотра

может DOS атака просто?

Den- Автор вопроса
Sergey Shitikov
может DOS атака просто?

в access-логе же количество запросов бы выросло? А оно в тот час и потом больше не стало(

лимиты расставляй на соединения (timeout и connect_timeout), с базой, со сторонним API так вообще обязательно и тогда уже сможешь понять где проблема

Den- Автор вопроса
Egor Gruzdev
лимиты расставляй на соединения (timeout и connect...

Да, добавлю. Логгировались только ответы от внутреннего апи, а оно после апдейта стало подтормаживать. В итоге запросы которые отрабатывались за миллисекунды-секунду стали висеть в ожидании ответа до 60 секунд, держа коннекты с постгресс базой. Видимо поэтому 100 коннэктов перестало хватать. Увеличение лимита соединений показало другое слабое место - количество php-fpm процессов в 50. Увеличение до 100 проблему не решило, но с таким лимитом в логе появились таймауты запросов уже к внутреннему апи.

Den- Автор вопроса

Да, конечно

Den
Да, конечно

Запррсы в базу нормально работают, если не с приложения слать ?

Den- Автор вопроса
E V.
Запррсы в базу нормально работают, если не с прило...

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

Den
К постгрессу у меня есть доступ - открыл логи увид...

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

Den
К постгрессу у меня есть доступ - открыл логи увид...

Потыкайте курлом в апишку примерно в такой конструкции: curl -s --connect-timeout 5 -w "time_namelookup: %{time_namelookup}, time_connect: %{time_connect}, time_appconnect: %{time_appconnect}, time_pretransfer: %{time_pretransfer}, time_redirect: %{time_redirect}, time_starttransfer: %{time_starttransfer}, time_total: %{time_total}\n" -o /dev/null `https://example.com`

Den- Автор вопроса
Georgy
И скиньте вывод)

Да, именно так и делал и увидел проблемы в ней) Просто админы апи перед этим сказали у нас проблем нет. Оказалось всё-таки есть (

Den- Автор вопроса
Georgy
А что именно грустит? Резолв имени?

Внутреннее апи подвисает.

Den- Автор вопроса
Den
Нет.

Эх.. Не на докере крутит аппликуху свою?

Den- Автор вопроса
Georgy
Эх.. Не на докере крутит аппликуху свою?

Этого уже не знаю, оно ещё дальше взаимодействует с другой внутренней инфраструктурой. Да и подвисать стали разные запросы к этому апи, поэтому тоже не сразу понял в чем дело.

Den
Этого уже не знаю, оно ещё дальше взаимодействует ...

Просто если в контейнере на альпине крутится, то welcome to hell. Там просто прекраснейше испоганена сеть.

Den
Нет)

Ну тогда пинайте админов, что то резко простое в голову не идёт)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта