Как предотвратить завершение процесса при большом количестве сетевых ошибок?

Здравствуйте!

Есть приложение-клиент, которое работает по сети с приложением-сервером. Изредка ресурсы сервера исчерпываются и все новые подключения отвергаются. На стороне клиента это проявляется в том, что полинг возвращает большое количество готовых дескрипторов с ошибками. Каждый дескриптор нужно обработать. Поэтому нагрузка на ядро процессора повышается до 100% (в обычных условиях ~50%).

Подытожу. На стороне клиента изредка случаются "аномальные" ситуации, при которых процессу возвращается большое количество сокетных ошибок, а тот в свою очередь нагружает ядро CPU на 100%.

Затем приходит нечто (не oom-killer) и завершает работу процесса. Вероятно, срабатывают какие-то защитные механизмы ОС.

Можно ли отключить такое поведение? Если да, то как?

Надеялся на то, что игнорирование сигналов решит проблему, но надежды не оправдались.

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

UPD. Пока даже не понятно, что именно завершает работу процесса. Прошу подсказать, в какую сторону рыть вообще?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
@andiges
Наверно в вашей ситуации будет логичнее исправить поведение клиента, чем поведение системы. Но мне например без примерного кода сложно что-то конкретно подсказать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы