доменный сокет “sendto” встречается “с errno 111, соединение, которому отказывают”

Я использую доменный сокет, чтобы заставить значения от другого процесса, как получать значение от B, Это работает хорошо в течение многих месяцев. Но недавно, A является отказавшим во время сообщения "sendto" к B с "errno 111, соединение, которому отказывают" иногда.

Я проверил, что сокет домена B связывает файл, это, существует. Я также делаю некоторые тесты в другой машине, также работы хорошо. Так, кто-либо встречается с этой проблемой прежде? У кого-либо могут быть некоторые подсказки, что могло бы быть, вероятно, неправильным в этом сценарии?Большое спасибо.

7
задан Chris Zheng 18 May 2010 в 02:20
поделиться

1 ответ

Когда я видел эту ошибку с сокетами домена unix, обычно это происходило из-за того, что процесс B не запущен или существует несоответствие в путях подключения. (Если B умирает, он автоматически перезагружается? Возможно ли, что сбои происходят, когда B умер, но еще не перезапущен?). Другая возможность: возможно ли, что несколько копий A работают одновременно? Вы можете получить ошибку ECONNREFUSED, если очередь еще не принятых соединений B заполнена.

Я бы посоветовал запустить оба процесса A и B под strace , либо:

strace -o A.log A

, либо, если процесс уже запущен,

strace -o B.log -p <process-id-of-B>

Кроме того,

netstat -na

предоставит вам статус всех сокеты домена unix, присутствующие в системе.

4
ответ дан 7 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: