Сокет закрывается при ожидании вызова от системы - механизм биения

У меня реализован механизм сердцебиения, при котором приложение "app1" отправляет импульс каждые 60 секунд для сторожевого процесса "watch1". Если watch1 не получает никакого сообщения от app1 через 60 секунд, он предполагает, что app1 мертв, и перезапускает его. Но на самом деле он жив. Эта связь происходит через сокеты TCP/IP и приложения, работающие на одной машине. Процесс watch1 прослушивает порт скажем 3000, чтобы прочитать пакет из app1. Эти приложения работают на нескольких ОС UNIX,AIX и т. Д.

Но для конкретной машины AIX сокет 'app1 закрывается, и процесс watch1 перезапускает app1 снова и снова. Это многопоточное приложение, в котором app1 создает один поток для отправки сообщения / пакета в watch1.

Я установил скрипт, который каждые 60 секунд запускал 'procstack' для PID app1, чтобы посмотреть, что происходит. Это не дало никаких указателей, на которые я надеялся (например, застрял в замке), скорее, он начал показывать некоторые "странные" шаблоны стека:

 ---------- tid# 21692655 (pthread ID:   3342) ----------
 0xd4be4754  SocketBase::close()(0x0) + 0x34 
 0xd0503ca4  _event_wait(??, ??) + 0x2c4
 0xd0511e78  _cond_wait_local(??, ??, ??) + 0x378
 0xd05125d0  _cond_wait(??, ??, ??) + 0xb0
 0xd0512f1c  pthread_cond_timedwait(??, ??, ??) + 0x21c
 0xd4a2cbd8  TaskEvent::Wait(int)(0x32ebc03c, 0x7530) + 0xd8
 0xd4e40b70  SendIAmAliveThreadFunc(void*)(0x32ebc038) + 0xf50
 0xd3dfcdc4  ThreadStartRoutine(void*)(0x32ebbba8) + 0xc4
 0xd04f0c4c  _pthread_body(??) + 0xec 

Нет смысла, что служба ядра _event_wait() будет вызывать наш код (класс-оболочку для обработки сокетов) SocketBase::close(). Может быть какая-то странная аномалия; может потребоваться некоторая экспертиза AIX, чтобы помочь диагностировать.

Кто-нибудь знает об этой проблеме или руководство по этому вопросу?

** * ** * * EDIT1 - 23-11-12 * ***

Процесс app1 завершается с сигналом 15.

Журналы: полученный сигнал 15 в потоке 515 Поток 515 не обрабатывает сигнал 15 Аварийное завершение из-за сигнала 15kill: 7143518: нет такого процесса Команда запуска не выполнена. kill: 7405740: нет такого процесса

предупреждение: основной файл не является полным ядром. Некоторая информация может быть недоступна.

0 ответов

Другие вопросы по тегам