Я использую доменный сокет, чтобы заставить значения от другого процесса, как получать значение от B, Это работает хорошо в течение многих месяцев. Но недавно, A является отказавшим во время сообщения "sendto" к B с "errno 111, соединение, которому отказывают" иногда.
Я проверил, что сокет домена B связывает файл, это, существует. Я также делаю некоторые тесты в другой машине, также работы хорошо. Так, кто-либо встречается с этой проблемой прежде? У кого-либо могут быть некоторые подсказки, что могло бы быть, вероятно, неправильным в этом сценарии?Большое спасибо.
Когда я видел эту ошибку с сокетами домена 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, присутствующие в системе.