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

У меня реализован механизм сердцебиения, когда приложение «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, чтобы помочь диагностировать.

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

******* РЕДАКТИРОВАТЬ1 — 23-11-12 ****

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

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

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]