Inundação massiva de SSDP, como encontrar a causa

0

Eu tenho usado o Wireshark para capturar minha rede após um desempenho degradante da minha rede desde a instalação do meu novo servidor. Descobri que há alguns momentos em que meu servidor envia 170.000 solicitações de SSDP em 30 segundos. Parece um pouco excessivo: 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]

Esta é a solicitação exata que envia mais de 100 mil vezes. Agora eu estava me perguntando, existe uma maneira inteligente de descobrir qual processo exato está causando esse pedido no meu servidor?

    
por Jorrick Sleijster 11.10.2017 / 15:12

1 resposta

0

Use sudo lsof -n -P -i +c 13 | grep 1900 para encontrar o processo fazendo isso.

De man lsof : listar arquivos abertos

% bl0ck_qu0te%
  1. -n : inibe a conversão de números de rede em nomes de host para arquivos de rede. A inibição da conversão pode fazer com que o lsof seja executado mais rapidamente. Também é útil quando a pesquisa de nomes de host não está funcionando corretamente.

  2. -P : inibe a conversão de números de porta em nomes de porta para arquivos de rede. A inibição da conversão pode fazer com que o lsof seja executado um pouco mais rápido. Também é útil quando a pesquisa de nome de porta não está funcionando corretamente.

  3. -i [i] : seleciona a listagem de arquivos cujo endereço da Internet corresponde ao endereço especificado em i. Se nenhum endereço for especificado, essa opção selecionará a listagem de todos os arquivos de rede da Internet e do x.25 (HP-UX).

  4. +c w : define o número máximo de caracteres iniciais do nome, fornecido pelo dialeto UNIX, do nome             Comando UNIX associado a um processo a ser impresso na coluna COMMAND. (O lsof padrão é             nove.)

 sudo lsof -n -P -i +c 13 | grep 1900

Relacione os arquivos abertos pelos processos em seu sistema e use as opções listadas acima para modificar o que é apresentado a você. Por exemplo eu usei:

 sudo lsof -P -i +c 13

Resultado:

  1. Mais lento sem -n e

  2. Conversão de números de rede para nomes de host

    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 
    

Mas usando:

sudo lsof -n -P -i +c 13

Resultados:

  1. Mais rápido e nenhuma conversão de números de rede para nomes de host

     postgres       2930        postgres   11u  IPv4  28152      0t0  UDP 127.0.0.1:56771->127.0.0.1:56771 
    postgres       2931        postgres   11u  IPv4  28152      0t0  UDP 127.0.0.1:56771->127.0.0.1:56771 
    postgres       2932        postgres   11u  IPv4  28152      0t0  UDP 127.0.0.1:56771->127.0.0.1:56771 
    postgres       2933        postgres   11u  IPv4  28152      0t0  UDP 127.0.0.1:56771->127.0.0.1:56771 
    postgres       2934        postgres   11u  IPv4  28152      0t0  UDP 127.0.0.1:56771->127.0.0.1:56771 
    postgres       2936        postgres   11u  IPv4  26439      0t0  UDP 127.0.0.1:46276->127.0.0.1:46276 
    postgres       2937        postgres   11u  IPv4  26439      0t0  UDP 127.0.0.1:46276->127.0.0.1:46276 
    postgres       2938        postgres   11u  IPv4  26439      0t0  UDP 127.0.0.1:46276->127.0.0.1:46276 
    postgres       2939        postgres   11u  IPv4  26439      0t0  UDP 127.0.0.1:46276->127.0.0.1:46276 
     postgres       2940        postgres   11u  IPv4  26439      0t0  UDP 127.0.0.1:46276->127.0.0.1:46276
    

Aqui eu usei apenas -n , fazer a conversão do número de rede leva mais tempo sem a opção -n tornar a pesquisa mais rápida, remover os nomes de host. Brinque com a outra opção para ver as diferentes saídas. De um modo geral, essas opções melhoram a pesquisa e a tornam mais rápida.

    
por George Udosen 19.10.2017 / 22:27