Algo que as pessoas que passam do TCP_OS para o STCP percebem logo de cara é que o conjunto de estatísticas TCP exibido pelo comando TCP_OS netstat é um pouco mais rico do que aquele exibido pelo STCP. As estatísticas netstat do STCP exibem as estatísticas padrão RFC-1213 TCP. Estatísticas como, acks duplicados, dados duplicados, pacotes fora de ordem ou contagens de sondas em janelas estão faltando. Entretanto, muitas das estatísticas estão disponíveis como parte da saída exibida pela solicitação stcp_meters do sistema de análise. Tente o comando:
analyze_system -request_line 'stcp_meters -all -long' -quit
Os argumentos e a saída do stcp_meters estão documentados no manual Análise do Sistema OpenVOS (R073), disponível em http://stratadoc.stratus.com. O conjunto de dados não é o mesmo que o do comando TCP_OS; faltam alguns contadores como "conexões lançadas por retransmissão", mas também faltam novos contadores como "janela ajustada a zero após a recepção". Um toque agradável é que a porcentagem do contador é calculada e apresentada de forma automática e automática.
Um grande problema com as estatísticas netstat TCP de ambos TCP_OS e STCP é que elas são para o módulo inteiro, contadores para cada conexão que já existiu (pelo menos para a inicialização atual) são adicionados juntos para obter os valores exibidos. Questões, como retransmissões inaceitáveis, que estão afetando uma ou poucas 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, stcp_meters pode tomar como argumento o endereço PCB (protocol control block) de uma única conexão e exibir as estatísticas para apenas essa conexão; o que o torna uma ajuda significativa para a depuração. Para encontrar o endereço PCB você executa netstat com o argumento PCB_addr, sim, a PCB está em maiúsculas. Uma vez que o netstat esteja completo, você encontra a conexão de interesse e o endereço da PCB está na primeira coluna.
A seguinte macro faz isso para você, rodando netstat, localizando a conexão de interesse, extraindo o endereço PCB e, em seguida, rodando stcp_meters. A macro toma ou o endereço PCB se você já o conhece (caso em que pula a maioria das etapas acima) ou 2 cordas 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 número da porta remota do endereço IP remoto. Isto identificará de forma única a conexão, mas talvez você consiga escapar com menos, por exemplo, apenas o número da porta local e o endereço IP remoto. Se os strings especificados identificarem mais de 1 conexão, então serão exibidos medidores para cada uma das conexões. A linha netstat aparecerá acima dos medidores para identificar para que conexão os medidores são destinados.
Se você quiser 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 ESTABELECIDO e qualquer linha com um cólon dentro dele.
& get_connection_meters começa aqui & & get_connection_meters.cm & versão 1.0 09-04-06 & [email protected] & &begin_parâmetros_de_parâmetros Opção LOCAL (-local),string Opção REMOTE (-remote),string Opção PCB(-pcb),string &parâmetros_de_envio & e certifique-se de que coisas estranhas não ecoem no arquivo de resultados &if (process_type) = 'batch' &then &do set_ready -format off &echo no_command_lines & fim & &if (comprimento &PCB&) > 0 &then &do &if (comprimento &LOCAL&) > 0 &then &goto ERROR_ADDRESS &if (comprimento &REMOTE&) > 0 &then &goto ERROR_ADDRESS analis_system -request_line (string stcp_meters &PCB& -all -long) -quit & Retorno & fim & &set_string FILE_1 (process_dir)>connect_stcp_meters_1.temp &set_string FILE_2 (process_dir)>connect_stcp_meters_2.temp & &if (comprimento &LOCAL&) = 0 &then &goto ERROR_ADDRESS &if (comprimento &REMOTE&) = 0 &then &goto ERROR_ADDRESS attach_default_output &FILE_1& netstat -numérico -PCB_addr detach_default_output & display &FILE_1& -match &LOCAL& -output_path &FILE_2& -no_header display &FILE_2& -match &REMOTE& -output_path &FILE_1& -no_header & &attach_input sistema_de_análise & LINHA DE SET 1 &label AGAIN &set_string CONNECTION (conteúdo &FILE_1& &LINE& -hold) &if (end_of_file &FILE_1&) = 1 &then &do &if &LINE& = 1 &then &goto ERROR_NOT_FOUND &else &do desista & Retorno & fim & fim & ..display_line ============================================================ ..display_line ============================================================ ..display_line ..display_line &CONNECTION& ..display_line &set_string PCB (substrato (string &CONNECTION&) 1 8) stcp_meters &PCB& -tudo -long &set LINE (calc &LINE& + 1) &goto AGAIN & & &label ERROR_NOT_FOUND desista display_line display_line display_line Não foi possível encontrar a conexão especificada na saída netstat display_line &LOCAL& &REMOTE& & Retorno & &label ERROR_ADDRESS display_line display_line Você deve entrar com uma PCB ou IP:porta local e remota display_line Usage: display_line ' get_connection_meters -pcb PCB''. display_line ' ou' display_line ' get_connection_meters -local IP:PORT -remote IP:PORT'. & Retorno & & get_connection_meters termina aqui