Я использовал Wireshark для захвата моей сети после ухудшения производительности моей сети с момента установки моего нового сервера. Я узнал, что есть пара моментов, когда мой сервер отправляет 170 000 запросов SSDP в течение 30 секунд. Кажется немного чрезмерным: p
Simple Service Discovery Protocol
M-SEARCH * HTTP/1.1\r\n
Host: 239.255.255.250:1900\r\n
<Host: 239.255.255.250:1900\r\n>
Man: "ssdp:discover"\r\n
ST: ssdp:all\r\n
MX: 5\r\n
\r\n
[Full request URI: http://239.255.255.250:1900*]
<Request: True>
[HTTP request 10/149390]
[Prev request in frame: 9]
[Next request in frame: 12]
Это точный запрос, который отправляет более 100 тысяч раз. Теперь мне было интересно, есть ли разумный способ узнать, какой именно процесс вызывает этот запрос на моем сервере?
Используйте sudo lsof -n -P -i +c 13 | grep 1900, чтобы найти процесс, выполняющий это.
Из man lsof: Список открытых файлов
Открытый файл может быть обычным файлом, каталогом, блоком специальный файл, специальный файл символа, текстовую ссылку для выполнения, библиотеку, поток или сетевой файл (интернет-сокет, файл NFS или сокет домена UNIX.) Конкретный файл или все файлы в файловой системе могут быть выбраны по пути , -n: запрещает преобразование номеров сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу. Это также полезно, если поиск имени хоста работает неправильно. -P: запрещает преобразование номеров портов в имена портов для сетевых файлов. Ингибирование конверсии может ускорить работу. Это также полезно, если поиск имени порта работает неправильно. -i [i]: выбирает список файлов, каждый из интернет-адресов которых соответствует адресу, указанному в i. Если адрес не указан, этот параметр выбирает список всех сетевых файлов Интернета и x.25 (HP-UX). +c w: определяет максимальное количество начальных символов имени, предоставленного диалектом UNIX, команды UNIX, связанной с процессом, который будет напечатан в столбце COMMAND. (Значение lsof равно девяти.) sudo lsof -n -P -i +c 13 | grep 1900
Он перечисляет файлы, открытые процессами в вашей системе, и использует перечисленные выше опции, чтобы изменить то, что представлено вам. Например, я использовал:
sudo lsof -P -i +c 13
Результат:
-n: запрещает преобразование номеров сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу. Это также полезно, если поиск имени хоста работает некорректно.-n: запрещает преобразовывать номера сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу.
postgres 2930 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2931 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2932 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2933 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2934 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2936 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2937 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2938 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2939 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2940 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
Преобразование номеров сетей в имена хостов
sudo lsof -n -P -i +c 13
Но использование:
-n: запрещает преобразование номеров сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу. Это также полезно, если поиск имени хоста работает некорректно.
postgres 2930 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2931 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2932 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2933 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2934 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2936 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2937 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2938 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2939 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2940 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
Результаты:
Используйте sudo lsof -n -P -i +c 13 | grep 1900, чтобы найти процесс, выполняющий это.
Из man lsof: Список открытых файлов
Открытый файл может быть обычным файлом, каталогом, блоком специальный файл, специальный файл символа, текстовую ссылку для выполнения, библиотеку, поток или сетевой файл (интернет-сокет, файл NFS или сокет домена UNIX.) Конкретный файл или все файлы в файловой системе могут быть выбраны по пути , -n: запрещает преобразование номеров сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу. Это также полезно, если поиск имени хоста работает неправильно. -P: запрещает преобразование номеров портов в имена портов для сетевых файлов. Ингибирование конверсии может ускорить работу. Это также полезно, если поиск имени порта работает неправильно. -i [i]: выбирает список файлов, каждый из интернет-адресов которых соответствует адресу, указанному в i. Если адрес не указан, этот параметр выбирает список всех сетевых файлов Интернета и x.25 (HP-UX). +c w: определяет максимальное количество начальных символов имени, предоставленного диалектом UNIX, команды UNIX, связанной с процессом, который будет напечатан в столбце COMMAND. (Значение lsof равно девяти.) sudo lsof -n -P -i +c 13 | grep 1900
Он перечисляет файлы, открытые процессами в вашей системе, и использует перечисленные выше опции, чтобы изменить то, что представлено вам. Например, я использовал:
sudo lsof -P -i +c 13
Результат:
-n: запрещает преобразование номеров сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу. Это также полезно, если поиск имени хоста работает некорректно.-n: запрещает преобразовывать номера сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу.
postgres 2930 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2931 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2932 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2933 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2934 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2936 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2937 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2938 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2939 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2940 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
Преобразование номеров сетей в имена хостов
sudo lsof -n -P -i +c 13
Но использование:
-n: запрещает преобразование номеров сетей в имена узлов для сетевых файлов. Ингибирование преобразования может ускорить работу. Это также полезно, если поиск имени хоста работает некорректно.
postgres 2930 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2931 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2932 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2933 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2934 postgres 11u IPv4 28152 0t0 UDP localhost:56771->localhost:56771
postgres 2936 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2937 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2938 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2939 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
postgres 2940 postgres 11u IPv4 26439 0t0 UDP localhost:46276->localhost:46276
Результаты: