Что такое точно соединение через сокет или что вывод lsof говорит нам?

Я передаю некоторые файлы потоком от S3 до экземпляра EC2 для получения сводных данных от заголовков. Я использую key.close(fast=True) для всех ключей я добираюсь от boto.s3.bucket.Bucket.list() (библиотека Python к доступу S3), но раздают ссылку на ключи, таким образом, я могу считать части их, и это работает. Однако я иногда добираюсь [Errno 24]: Слишком много открытых файлов.

Когда я работаю lsof | grep python Я получаю разнообразие их:

python    10573 ec2-user  399u     IPv4  59221       0t0    TCP ip-10-0-0-113.ec2.internal:59293->s3-1-w.amazonaws.com:https (CLOSE_WAIT)
python    10573 ec2-user   72u     IPv4  60910       0t0    TCP ip-10-0-0-113.ec2.internal:37952->s3-1-w.amazonaws.com:https (ESTABLISHED)

и одно из этого:

python    10573 ec2-user   91u     sock    0,6       0t0  61105 can't identify protocol

Эти веб-серверы? Что означают столбцы? Я должен буду исследовать больше, чтобы выяснить, как закрыть эти соединения в Python, но я хочу закрыть эти соединения? Действительно ли более умно сделать и снова использовать одно соединение, или разве который не выполним? Я выясню сторону Python, когда я пойму больше того, что происходит, это - главным образом вопрос для того, что продолжается.

ulimit -a говорит, что открытый максимум файлов 1024, и опция состоит в том, чтобы просто повысить его. Однако я хочу удостовериться, что я закрываю файлы, которыми я должен быть.

0
задан 24 September 2014 в 01:08

1 ответ

Эти веб-серверы? [...] я хочу закрыть эти соединения?

Это действительно связи, которые Вы установили, и необходимо правильно закрыть по крайней мере те отмеченные CLOSE_WAIT (этому нужен один дополнительный шаг из-за Подключения HTTPS). При выполнении большого количества вещей, включающих сайты HTTPS мыться правильно должно быть достаточно для решения этой проблемы. can't identify protocol вероятно, соединение, которое еще не было полностью настроено (см. вопрос о SF, связанный выше или это ТАК вопрос).

Действительно ли более умно сделать и снова использовать одно соединение, или разве который не выполним?

Да, и это должно быть выполнимо. Это - вопрос о программировании, все же.

Что такое точно соединение через сокет [?]

Сокет обычно определяется как an endpoint for communicationman 2 socket и man 3 socket. Это зависит, на котором конкретном протоколе Вы используете.


Что означают столбцы?

Согласно man lsof:

 An  open file may be a regular file, a directory, a block special file,
 a character special file, an executing text  reference,  a  library,  a
 stream  or  a  network  file  (Internet socket, NFS file or UNIX domain
 socket.)  A specific file or all the files in  a  file  system  may  be
 selected by path.

Список по умолчанию столбцов для lsof :

$ lsof | head -1
COMMAND     PID   TID    USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

Вы, кажется, отсутствуете TID (или идентификатор потока) столбец. COMMAND, PID и USER сам объяснительные. FD количество дескриптора файла. 399u указывает, что fd пронумерован 339 (это может быть найдено в /proc/10573/fd/339) и имеет и доступ для чтения и доступ для записи (u).

TYPE IPv4 указывает, что это - сокет IPv4 (sock для сокета неизвестного домена).

DEVICE вывод для нормальных файлов:

Столбец DEVICE говорит нам, какое устройство мы продолжаем работать. Эти два числа называют главными и незначительными числами. Список известен и зарегистрирован. Например, главный номер 8 обозначает блочное устройство SCSI. Для сравнения диски IDE имеют главный номер 3. Незначительное число указывает на один из 15 доступных разделов. Таким образом (8,1) говорят нам, что мы работаем над sda1.

(0,16), другое интересное перечисленное устройство относится к без имени, неустройство монтируется.

Для подробного списка см.:

http://www.kernel.org/pub/linux/docs/device-list/devices.txt

И список (на самом деле в https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt) имеет не много применения для устройств с главным числом 0.

NAME поле, для таких сокетов:

[...]  the  local  and  remote  Internet addresses of a network
file; the local host name or IP  number  is  followed  by  a
colon  (':'),  the  port,  ``->'',  and  the two-part remote
address; IP addresses may be reported as numbers  or  names, [...]
1
ответ дан 7 October 2019 в 01:39

Другие вопросы по тегам:

Похожие вопросы: