почему у меня так много открытых обработчиков сокетов и записей в 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 (указывая на мой код), но я чувствую, что он более системно-ориентирован.

  • Linux: отслеживайте мое использование интернет-страниц за страницей
  • Получение текущего количества соединений TCP в системе
  • Как исследовать случайный сброс на порт TCP-клиента, подключенный через интерфейс loopback к серверу
  • Как узнать, как долго сокет находится в CLOSE_WAIT?
  • Добавить вариант управления перегрузкой TCP в Linux Ubuntu
  • Сиротские соединения в состоянии CLOSE_WAIT
  • Выполняется отлично через командную строку, не будет работать через systemd ExecStart
  • Какова семантика получения EADDRINUSE, когда не подключен прослушивающий сокет, но соединения открыты
  • tcpdump не захватывает трафик http или tcp / ssl
  • Настройка тайм-аута rsync TCP
  • Может ли nmap отображать только узлы с определенными портами?
  • Interesting Posts

    Как изменить ширину удаленной последовательной консоли?

    Есть ли способ изменить настройки отображения KDE4 из командной строки?

    Strace – Filedescriptor 3

    Не удается подключиться к WPA2, но соединение с WEP прекрасное

    Можно ли написать скрипт, который запускает команду su или sudo без ввода пароля?

    Новое в linux, изучение сценариев оболочки

    limit.conf модификация не работает

    Есть ли способ ввести пароль с экранной клавиатурой, чтобы разблокировать криптографическое устройство LUKS во время загрузки?

    OpenSSH – автоматическое создание частных и открытых ключей сервера

    Добавление сети eth с отдельным шлюзом

    Как добавить программу Windows (под Wine), которая не имеет установщика?

    Можно ли добавить что-то не-доменное имя без имени хоста в качестве псевдонима хоста?

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

    Как остановить ssh-сервер на arch linux

    CSF не блокирует порт при удалении из csf.conf

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