Size: a a a

2021 February 18

A

Andrey in Haskell
просто конкретно эту ошибку можно и проигнорировать.. by design
а вообще говоря после аллокации сокета может выпасть что угодно..
и уже в этом случае интересно было бы отловить это что-то другое и закрыть сокет!
источник

A

Andrey in Haskell
Misha Puzanov
данный конкретный не выглядит совсем уж ужасно, хотя вообще-то да, надо бы такие ошибки репортить наверх
он выглядит неприятно, если не сказать отвратительно, в сочетании с вот этим моментом, где функция getConn вызывается:

https://github.com/yesodweb/wai/blob/master/warp/Network/Wai/Handler/Warp/Run.hs#L290-L300
источник

MP

Misha Puzanov in Haskell
NOICE
источник

A

Andrey in Haskell
всё это не отменяет того, что на самом деле беда происходит раньше, в какой-то непонятный момент времени, из-за чего сокеты вдруг начинают течь, и вот эта функция бросает эксепшн.. при этом сервер начинает подавать признаки комы, отвечая от силы на 5% входящих соединений.. при этом вместе с сокетами начинает ещё и течь память.. что как бы логично, память ведь аллоцируется под это дело
источник

A

Andrey in Haskell
если прикола ради подержать сервер в таком состоянии, то по достижению лимита FD на процесс/юзера сервер встанет колом, а спустя ещё какое-то время ядро будет потихоньку забирать FD обратно.. только вот сервер это уже не спасёт..
источник

A

Andrey in Haskell
всё это странным образом коррелирует с ConnectionClosedByPeer эксепшнами..
причём забавно, что по логам сервера они тоже бывают двух видов:

- в первом случае клиент/прокси рубит соединение с апстримом, когда работает Application, т.е. сервант успевает сформировать ответ, но уже слишком поздно. грубо говоря, в час Х таких 80-90%.
- во втором случае даже хэдеры запроса не успевают распарситься. в лог вместо реквеста пишется тупо ничего (что как бы намекает на возможную мисконфигурацию прокси/ядра в плане keepalive..) а таких 10-20%.
источник

MP

Misha Puzanov in Haskell
в такие моменты хочется писать на джаве (на самом деле нет)
источник

A

Andrey in Haskell
самое забавное, что в джаве примерно то же самое, но там мейнтейнеры заходят чуть дальше и сопровождают сервер тулзой вида server-dump-tool, и просят включать его, снимать дамп и прикладывать артифакт к тикету.. они добавляют оверхеда на репортеров, в результате чего те сдаются.. (если что я про jetty говорю)
источник

A

Andrey in Haskell
такие проблемы тяжело воспроизводить в изолированном окружении/синтетически, не говоря уже о том, что на проде трассу врубать не всегда позволительно
источник

MP

Misha Puzanov in Haskell
сейчас сервер просто периодически перезапускается?
источник

A

Andrey in Haskell
по крону, лучшие SRE практики
источник

MP

Misha Puzanov in Haskell
а без прокси не пробовали гонять,  чтобы исключить вариант с корявым прокси? есть какие-то тулзы, которые воспроизводят траффик по аксесслогу
источник

MP

Misha Puzanov in Haskell
не помню название уже
источник

A

Andrey in Haskell
без прокси — не вариант, к сожалению.. слишком сильно надо заморачиваться с виртуальными хостами (или как они называются правильно), чтобы варп голой задницей наружу вытаскивать..
источник

TZ

Timofey Zakrevskiy in Haskell
A64m AL256m qn I0
неужто кроме них еще кто-то питон использует?
ЕМНИП, Conan на питончике, Scons тоже
источник

IR

IC Rainbow in Haskell
Ilya Kos
Такие конструкторы всегда с : начинаются
Вот это поворот. А кто ещё кроме NonEmpty так делает?
источник

MK

Maxim Koltsov in Haskell
IC Rainbow
Вот это поворот. А кто ещё кроме NonEmpty так делает?
все
источник

MK

Maxim Koltsov in Haskell
это правило такое для конструкторов-операторов
источник

MK

Maxim Koltsov in Haskell
тебе по-другому не дадут
источник

MK

Maxim Koltsov in Haskell
(черт знает зачем так)
источник