Пимонго не закрывает соединения - PullRequest
1 голос
/ 20 февраля 2012

мы пытаемся сделать сервер API для нашего проекта.

мы используем mongodb с pymongo на коробках Debian. все до дата.

но у нас действительно странная проблема с подключением. есть как правило, больше чем 15k-32k подключений к порту Mongodb, когда я проверяю с

root @ webserver1: / # netstat -na | grep mongo_db_ip | wc -l

я получил 15363

соединения в состоянии TIME_WAIT ...

но когда я проверяю монго, я вижу только 5-6 соединений на данный момент ...

мы написали класс mongodb, который создает экземпляр и делает подключение. мы попытались вызвать conn.disconnect () или conn.end_request () конец запроса каждый раз, но это не останавливается, что высокое соединение номер ...

Кто-нибудь может сказать, в чем должна быть моя ошибка, или есть написанный класс Python для mongodb, чтобы изучить, как другие делают, такие как прочее ...

спасибо за помощь и информацию ...

1 Ответ

2 голосов
/ 20 февраля 2012

TIME_WAIT не является открытым соединением.Это состояние операционной системы для сокета, чтобы он мог убедиться, что все данные прошли.AFAIK, длина по умолчанию для этого в Linux составляет минуту.Посмотрите на http://antmeetspenguin.blogspot.com/2008/10/timewait-in-netstat.html,, у него есть хорошее объяснение.Вы можете указать ядру повторно использовать сокеты TIME_WAIT, хотя:

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

уменьшает его до 30 секунд.

Однако вы должны проверить, почему вы делаете так много соединений.Вы говорите, что используете пакеты Debian для mongod и pymongo, и они, как правило, устарели.Вы действительно хотите использовать mongod 2.0.2 и pymongo 2.1.1.

...