Как предотвратить завершение процесса при большом количестве сетевых ошибок? Здравствуйте!
Есть приложение-клиент, которое работает по сети с приложением-сервером. Изредка ресурсы сервера исчерпываются и все новые подключения отвергаются. На стороне клиента это проявляется в том, что полинг возвращает большое количество готовых дескрипторов с ошибками. Каждый дескриптор нужно обработать. Поэтому нагрузка на ядро процессора повышается до 100% (в обычных условиях ~50%).
Подытожу. На стороне клиента изредка случаются "аномальные" ситуации, при которых процессу возвращается большое количество сокетных ошибок, а тот в свою очередь нагружает ядро CPU на 100%.
Затем приходит нечто (не oom-killer) и завершает работу процесса. Вероятно, срабатывают какие-то защитные механизмы ОС.
Можно ли отключить такое поведение? Если да, то как?
Надеялся на то, что игнорирование сигналов решит проблему, но надежды не оправдались.
Писать что-то, что будет рестартить процесс при его завершении, - видится мне каким-то ужасным костылем.
UPD. Пока даже не понятно, что именно завершает работу процесса. Прошу подсказать, в какую сторону рыть вообще?

21 Авг 2019 в 06:20
217 +1
0
Ответы
1

Для предотвращения завершения процесса при большом количестве сетевых ошибок вы можете попробовать следующие подходы:

Реализация механизма обработки исключений в вашем приложении-клиенте, чтобы корректно обрабатывать сетевые ошибки и избегать их накопления. Это позволит избежать нагрузки на CPU и снизить возможность завершения процесса.

Оптимизация работы сетевых соединений в вашем приложении. Например, вы можете настроить timeout'ы для сокетов, уменьшить количество попыток подключения при ошибке и т.д.

Мониторинг ресурсов сервера и предпринятие мер по устранению их исчерпания (например, увеличение количества ресурсов сервера, оптимизация работы серверного приложения и т.д.).

Рассмотрите возможность использования механизмов рестарта приложения в случае его завершения. Хотя это может быть временным решением, чтобы обеспечить бесперебойную работу приложения.

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

Надеюсь, эти рекомендации помогут вам предотвратить завершение процесса при большом количестве сетевых ошибок.

20 Апр 2024 в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир