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

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

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

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

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

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

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

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

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

20 Апр в 13:20
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 017 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир