почему у меня так много открытых обработчиков сокетов и записей в Netgrat DGRAM?

Я запускаюсь на RPi ( 3.12.35+ #730 PREEMPT Fri Dec 19 18:31:24 GMT 2014 armv6l GNU/Linux ) – демон в Python 2.7.8, который запрашивает различные API через requests и предоставляет API для другого приложения который использует его (оба работают на одной машине). Недавно я узнал в журналах (после того, как демон был запущен в течение некоторого времени), что у меня закончились обработчики открытых файлов с помощью исключения requests :

 ('Connection aborted.', error(23, 'Too many open files in system')) 

Поскольку я не открываю явные файлы, я подозревал, что мои http вызовы остаются открытыми.

Я звоню каждые 10 секунд (звонки на lsof по большей части) и после запуска демона в течение часа или двух сообщений lsof 32k + открытые соединения с sock :

 python2 804 pi 982u unix 0xce3565a0 0t0 116809 socket python2 804 pi 983u unix 0xcb5553c0 0t0 116875 socket python2 804 pi 984u unix 0xcb555780 0t0 116899 socket python2 804 pi 985u unix 0xd74dd1e0 0t0 117010 socket python2 804 pi 986u unix 0xcb555d20 0t0 116918 socket 

Это число увеличивается в большей или меньшей степени в соответствии со скоростью вызовов, все приложения вместе.

Я хотел заставить закрыть эти соединения, явно установив 'Connection': 'close' в моем коде, но, к сожалению, это не помогает, lsof все еще показывает множество открытых обработчиков sock .

netstat показывает огромное количество соединений DGRAM (около 12k +):

 (...) unix 2 [ ] DGRAM 74315 unix 2 [ ] DGRAM 68340 unix 2 [ ] DGRAM 67749 unix 2 [ ] DGRAM 58836 unix 2 [ ] DGRAM 58087 (...) 

Меня больше беспокоит то, что похоже, что последовательность tcp, похоже, правильно закрывается на сетевом уровне:

введите описание изображения здесь

Поэтому я здесь совсем потерялся. Растущее количество открытых дескрипторов, вероятно, связано с вызовами http, но мне трудно понять, почему они оставляют за собой открытые обработчики?

Примечание. Сначала я задал этот вопрос на SO (указывая на мой код), но я чувствую, что он более системно-ориентирован.

Interesting Posts

Как использовать команду date, чтобы узнать, какая дата будет «понедельная неделя 40»?

SUID-бит не работает для исполняемых файлов в каталоге / tmp

Каков наилучший способ создания удаленного туннеля?

Как возможно, что dpkg не требуется для установки пакетов deb?

Как безопасно извлечь ненадежный tar-файл?

Как я могу увидеть размер нераспределенного размера раздела в командной строке после сокращения раздела с помощью resize2fs?

на daemon создает пустые задачи

Ограничивает ли OpenBSD количество дескрипторов файлов?

Как отобразить данные сертификата TLS сервера в терминале?

Как получить «\» вместо «» после замены sed?

Как запустить Arch Linux pacaur не интерактивно?

Запретить создание каталогов, но разрешить создание файлов

разрешение на файлы

Может ли один ping сетевой адаптер MAC

Почему обновления, которые были перенесены в исходные версии обновлений тестирования Fedora, были невидимыми?

Linux и Unix - лучшая ОС в мире.