ScopedDbConnection время от времени выдает «Не удалось подключиться к 127.0.0.1», возможные причины? - PullRequest
2 голосов
/ 12 декабря 2011

На самом деле, сообщение об исключении просто говорит «Исключение через сокет», но я вошел в исходный код и увидел сообщение «Не удалось подключиться к 127.0.0.1».Любые предложения?

Чтобы уточнить: у меня примерно 10-20 соединений в секунду каждую секунду, и исключения генерируются примерно в два раза в минуту в среднем с непредсказуемыми интервалами и плотностью.Я не вижу никаких шаблонов.

PS Я получаю это исключение как в Windows, так и в Linux.Однако GDB и QtCreator отстой в Linux, поэтому я исследовал их только в Windows.

1 Ответ

2 голосов
/ 12 декабря 2011
Вы говорите:

от 10 до 20 соединений в секунду каждую секунду?

Вы почти наверняка переполняете "журнал ожидания слушания" на сервере. Когда серверная программа POSIX хочет прослушивать входящие соединения сокетов, она вызывает listen() с аргументом backlog, который часто составляет примерно 5-100 или около того. Это устанавливает максимальное количество входящих соединений, которые операционная система может одновременно ожидать. Таким образом, вы можете иметь более 100 соединений, но вы не можете иметь 100 (или, может быть, даже 10) в полете одновременно на сервере. Вы можете прочитать об этом здесь: http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/023/2333/2333s2.html

И действительно, из трекера ошибок MongoDB кажется, что они используют значение по умолчанию 5. См. Здесь: https://jira.mongodb.org/browse/SERVER-2554. С другой стороны, реальный код на GitHub показывает аргумент невыполненной работы 128: https://github.com/mongodb/mongo/blob/5a2f4ceb93b44283500f1ed346898439ca33b137/util/net/listen.cpp#L138, и я вернулся на 2,5 года назад, и, похоже, он тоже имел значение 128. Однако я не уверен, что это правда - если это так, народ Монго не обновляет свой список ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...