Pular para o conteúdo principal

Algo que as pessoas que migram do TCP_OS para o STCP percebem imediatamente é que o conjunto de estatísticas TCP exibido pelo comando netstat do TCP_OS é bem mais rico do que o exibido pelo STCP. As estatísticas netstat do STCP exibem as estatísticas TCP padrão RFC-1213. Estatísticas como acks duplicados, dados duplicados, pacotes fora de ordem ou contagens de sondagem de janela estão ausentes. No entanto, muitas das estatísticas estão disponíveis como parte da saída exibida pela solicitação analyze_system stcp_meters. Experimente o comando:
analyze_system -request_line ‘stcp_meters -all -long’ -quit

Os argumentos e resultados do stcp_meters estão documentados no manual OpenVOS System Analysis (R073), disponível em http://stratadoc.stratus.com. O conjunto de dados não é o mesmo do comando TCP_OS; alguns contadores, como “conexões perdidas por retransmissão”, estão ausentes, mas também há novos contadores, como “janela definida como zero após recepção”. Um detalhe interessante é que a porcentagem do contador é calculada e apresentada automaticamente.

Um grande problema com as estatísticas TCP do netstat do TCP_OS e do STCP é que elas são para todo o módulo, os contadores para cada conexão que já existiu (pelo menos para a inicialização atual) são somados para obter os valores exibidos. Problemas, como retransmissões inaceitáveis, que estão afetando uma ou algumas conexões podem se perder nas contagens gerais. O comportamento padrão do stcp_meters tem o mesmo problema, ele agrega os contadores de todas as conexões desde a inicialização atual; MAS, o stcp_meters pode receber como argumento o endereço PCB (bloco de controle de protocolo) de uma única conexão e exibir as estatísticas apenas para essa conexão; o que o torna uma ajuda significativa na depuração. Para encontrar o endereço PCB, execute o netstat com o argumento PCB_addr, sim, o PCB está em maiúsculas. Quando o netstat for concluído, você encontrará a conexão de interesse e o endereço PCB estará na primeira coluna.

A seguinte macro faz isso por você, executando o netstat, localizando a conexão de interesse, extraindo o endereço PCB e, em seguida, executando o stcp_meters. A macro pega o endereço PCB, se você já o souber (nesse caso, ela pula a maioria das etapas acima), ou duas strings para ajudar a identificar a conexão de interesse. A mensagem de uso indica que as strings devem ser o endereço IP local, o número da porta local e o endereço IP remoto, o número da porta remota. Isso identificará a conexão de forma exclusiva, mas você pode conseguir fazer isso com menos informações, por exemplo, apenas o número da porta local e o endereço IP remoto. Se as strings especificadas identificarem mais de uma conexão, os medidores para cada uma das conexões serão exibidos. A linha netstat aparecerá acima dos medidores para identificar a qual conexão os medidores se referem.

Se você deseja exibir medidores para todas as suas conexões estabelecidas, tente o comando
get_connection_meters -local ESTAB -remote :

Neste caso, os argumentos não representam os endereços locais e remotos, mas o estado ESTABLECIDO e qualquer linha com dois pontos.

& get_connection_meters começa aqui
&
& get_connection_meters.cm
&   versão 1.0 09-04-06
&   [email protected]
&
&begin_parameters
LOCAL  opção (-local), string
REMOTE opção (-remote), string
PCB    opção (-pcb), string
&end_parameters
&
& certifique-se de que elementos estranhos não sejam repetidos no arquivo de resultados
&if (process_type) = 'batch' &then &do
set_ready -format off
&echo no_command_lines
&end
&
&if (length &PCB&) > 0
&então &fazer
   &se (comprimento &LOCAL&) > 0
       &então &ir para ERROR_ADDRESS
   &se (comprimento &REMOTE&) > 0
       &então &ir para ERROR_ADDRESS
   analisar_sistema -linha_de_solicitação (string medidores_stcp &PCB& -todos -longos) -sair
   &retornar
&fim
&
&definir_string ARQUIVO_1 (diretório_do_processo)>conectar_medidores_stcp_1.temp
&set_string FILE_2 (process_dir)>connect_stcp_meters_2.temp
&
&if (length &LOCAL&) = 0
    &then &goto ERROR_ADDRESS
&if (length &REMOTE&) = 0
    &then &goto ERROR_ADDRESS
anexar_saída_padrão &FILE_1&
netstat -numeric -PCB_addr
desanexar_saída_padrão

exibir &FILE_1& -corresponder &LOCAL& -caminho_de_saída &FILE_2& -sem_cabeçalho
exibir &FILE_2& -correspondência &REMOTE& -caminho_de_saída &FILE_1& -sem_cabeçalho
&
&anexar_entrada
analisar_sistema
&definir LINHA 1
&rotular NOVAMENTE
&definir_string CONEXÃO (conteúdo &FILE_1& &LINHA& -manter)
&if (end_of_file &FILE_1&) = 1 &then &do
    &if &LINE& = 1
       &then &goto ERROR_NOT_FOUND
       &else &do
          quit
          &return
       &end
&end
&
..display_line ============================================================
..display_line ============================================================
..display_line
..display_line &CONEXÃO&
..display_line
&set_string PCB (substr (string &CONEXÃO&) 1 8)
stcp_meters &PCB& -all -long
&set LINE (calc &LINE& + 1)
&goto AGAIN
&
&
&label ERROR_NOT_FOUND
quit
display_line
display_line
display_line Não foi possível encontrar a conexão especificada na saída do netstat
display_line &LOCAL& &REMOTE&
&return
&
&label ERROR_ADDRESS
display_line
display_line Você deve inserir um PCB ou AMBOS os IP:port locais e remotos.
display_line Uso:
display_line '        get_connection_meters -pcb PCB'
display_line '    ou'
display_line '        get_connection_meters -local IP:PORT -remote IP:PORT'
&return
&
& get_connection_meters termina aqui

© 2024 Stratus Technologies.