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

Привет, есть идеи во что может упираться, что за магическая

цифра такая в 400 K?

26 ответов

37 просмотров

400к time_wait сокетов ?

я бы скорее думал почему их так много. Пробовали net.ipv4.tcp_tw_recycle=1?

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
Илья Журавлёв
я бы скорее думал почему их так много. Пробовали n...

Да, вот в рамках диагностики пытаюсь разобраться 🙂

𝚔𝚟𝚊𝚙𝚜
Да, вот в рамках диагностики пытаюсь разобраться 🙂

Ну если вам реюз не нужен то можно крутануть tcp_fin_timeout Но лучше, конечно, понять и исправить причину

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
𝚔𝚟𝚊𝚙𝚜- Автор вопроса
Илья Журавлёв
freebsd?

бубунта 5.13.0-27-generic

𝚔𝚟𝚊𝚙𝚜
бубунта 5.13.0-27-generic

значит не там смотрите Это от sysctl

вы бы написали что это. я ставлю на ограничение в которое уперся сервак, но какое оно зависит от того, что за сервер. 1) оно может у него как в конфиге быть прописано, 2) или выражаться в лимите на число открытых файловых дескрипторов, тут наврядли т.к. в time wait вроде он уже не занят 3) или лимите на число окрытых портов если все соединения с малого числа точек. Например у вас 8 серверов у которых ip_local_port_range поставлен так что сокетов 50 тыс, их 8 и они долбятся в один сервак. Вам было бы если честно полезней вывести ошибки на создании сокета, если их нет то time wait фигня.

𝚔𝚟𝚊𝚙𝚜
у меня такого параметра нет

В ещё можно осторожно tcp_tw_reuse...

Anatoly Orlov
вы бы написали что это. я ставлю на ограничение в ...

Сокеты они там в бакетах и количество бакетов задаётся как и их размер - так что 400к это вероятно от этих настроек лимит

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
Илья Журавлёв
значит не там смотрите Это от sysctl

# sysctl net.ipv4.tcp_tw_recycle sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory # sysctl -a | grep recycle <пусто>

Илья Журавлёв
я бы скорее думал почему их так много. Пробовали n...

1. Включив tcp_tw_recycle, вы говорите ядру Linux, чтобы оно использовало в качестве MSL не константу, а рассчитало его на основе особенностей именно вашей сети. Как правило (если у вас не dial-up), включение tcp_tw_recycle значительно сокращает время нахождения соединения в состоянии TIME_WAIT. Но здесь есть подводный камень: перейдя в состояние TIME_WAIT, ваш сетевой стек при включенном tcp_tw_recycle будет отвергать все пакеты с IP второй стороны, участвовавшей в соединении. Это может вызывать ряд проблем с доступностью при работе из-за NAT, с чем мы и столкнулись в приведенном выше кейсе. Проблема крайне сложно диагностируется и не имеет простой процедуры воспроизведения/повторяемости, поэтому мы рекомендуем проявлять крайнюю осторожность при использовании tcp_tw_recycle 2. в тырнетах рекомендовалось добавить в ядро параметр для ускоренного освобождения сокета net.ipv4.tcp_tw_recycle = 0 но при перезапуске конфига влезала ошибка # sysctl -p /etc/sysctl.conf sysctl: cannot stat /proc/sys/net/ipv4/tcp_tw_recycle: No such file or directory Небольшой гуглеж дает ответ, что параметр net.ipv4.tcp_tw_recycle был выпилен из ядра на версии 4.12, ввиду того, что имелись проблемы с работой из-за NAT. Чекаем версию ядра # uname -a Linux mail.xxxx 5.18.4-1.el8.elrepo.x86_64 и понимаем что это как раз про нас. Вместо него рекомендуется устанавливать параметр net.ipv4.tcp_tw_reuse = 1 который позволяет использовать TIME-WAIT сокет повторно. по умолчанию в системе взведено значение 2, которое позволяет этот функционал только для loopbac

Dmitry
Сокеты они там в бакетах и количество бакетов зада...

Мы один раз ловили очень неприятный факап. У нас было 3 балансера внутренних для grpc, и в какой-то момент чуваки задеплоили web чат который сделал 10М живых сокетов (открывал постоянно, а не когда чат начался), и у серваков просто не хватило пар srcip-srcport-dstip-dstport, для внутренних IP/портов (для внешних как раз не проблема т.к. там один пользователь один ip). Это я к тому что даже если там нет ограничения в 400К его легко можно достичь конфигурацией нескольких серверов вокруг

Anatoly Orlov
Мы один раз ловили очень неприятный факап. У нас б...

Как сделать серверу плохо я и так знаю, лучше расскажи как сделать хорошо )))

Dmitry
Как сделать серверу плохо я и так знаю, лучше расс...

так вы расскажите, что за сервер, что за соединения. Я думаю у вас на сервер наведена ужасная порча, ее очень сложно снять просто так, нужна либо фотография сервера либо описание, что он делает 🙂

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
Anatoly Orlov
вы бы написали что это. я ставлю на ограничение в ...

небольшая вводная: Есть кластер с постоянной нагрузкой гдето 50000rps. Периодически в часы пик всё начинает резко тупить, но при этом на графиках по ресурсам особых аномалий нет. Но при этом соединение между сервисами начинает устанавливаться куда медленнее чем обычно. Внимание привлёк этот график, т.к. есть подозрение что упираемся в какой-то лимит по числу открытых сокетов.

𝚔𝚟𝚊𝚙𝚜
небольшая вводная: Есть кластер с постоянной нагр...

tw если мы этот график читаем верно это не открытые, а почти закрытые

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
𝚔𝚟𝚊𝚙𝚜
небольшая вводная: Есть кластер с постоянной нагр...

Сервер общается с малым количеством внутренних серверов, т.е. это бекенд и общается с фронтом. Или сервер сам фронт и отвечает разным пользователям? смотрите можно подтвердить, что соединение не устанавливается с помощью tcpdump с этого сервера. Дальше если соединение пришло, но не установилось вы смотрите код ошибки на сервере, а если никто даже не пытался установить, то смотрите смотрите код ошибки на клиенте.

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
Anatoly Orlov
вы бы написали что это. я ставлю на ограничение в ...

Проблема была в количестве устанавливаемых соединений nginx-ingress-контроллера ко внутренним подам. Сам nginx-ingress-controller работал в host network. И при каждом обращении к подам занимал порт на адресе ноды, таких подключений было очень много, именно из-за них заканчивались свободные порты и не могли установиться новые подключения. Решение: Передеплоить nginx-ingress в: - Deployment вместо Daemonset - Количество реплик x3 от общего числа нод - переключить externalTraficPolicy из Cluster в Local (в этом случае для входящих подключений используется DstNAT вместо SourceNAT, который не занимает портов на ноде)

𝚔𝚟𝚊𝚙𝚜
Проблема была в количестве устанавливаемых соедине...

А у тебя автоскейлинг нод есть? Если да, не боишься такого https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-41/Layer-3/Equal-Cost-Multipath-Load-Sharing-Hardware-ECMP/#resilient-hash-buckets ?

𝚔𝚟𝚊𝚙𝚜- Автор вопроса
Grigoriy Rochev
А у тебя автоскейлинг нод есть? Если да, не боишьс...

Неа. У меня железки. Но спасибо за предостережение

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта