Zum Hauptinhalt springen

Wer von TCP_OS zu STCP wechselt, wird sofort feststellen, dass die vom TCP_OS-Befehl netstat angezeigten TCP-Statistiken wesentlich umfangreicher sind als die von STCP angezeigten. STCPs netstat-Statistiken zeigen die standardmäßigen RFC-1213-TCP-Statistiken an. Statistiken wie z. B. doppelte Acks, doppelte Daten, Pakete, die nicht in Ordnung sind, oder die Anzahl der Fenstersonden fehlen. Viele der Statistiken sind jedoch als Teil der Ausgabe verfügbar, die von der analyze_system stcp_meters-Anfrage angezeigt wird. Probieren Sie den Befehl aus:
analyze_system -request_line 'stcp_meters -all -long' -quit

Die stcp_meters-Argumente und -Ausgaben sind im Handbuch OpenVOS System Analysis (R073) dokumentiert, das unter http://stratadoc.stratus.com verfügbar ist. Der Datensatz ist nicht der gleiche wie der des TCP_OS-Befehls; einige Zähler wie "connections dropped by retransmit" fehlen, aber es gibt auch neue Zähler wie "window set zero after receive". Eine nette Sache ist, dass der Zählerprozentsatz automatisch berechnet und dargestellt wird.

Ein Hauptproblem bei den netstat-TCP-Statistiken von TCP_OS und STCP besteht darin, dass sie für das gesamte Modul gelten, d. h. die Zähler für jede Verbindung, die jemals bestanden hat (zumindest für den aktuellen Bootvorgang), werden addiert, um die angezeigten Werte zu erhalten. Probleme, wie inakzeptable Neuübertragungen, die nur eine oder wenige Verbindungen betreffen, können in den Gesamtzahlen verloren gehen. Das Standardverhalten von stcp_meters hat das gleiche Problem, es addiert die Zähler aller Verbindungen seit dem aktuellen Bootvorgang; ABER stcp_meters kann als Argument die PCB-Adresse (protocol control block) einer einzelnen Verbindung nehmen und die Statistiken nur für diese eine Verbindung anzeigen, was es zu einer wichtigen Hilfe bei der Fehlersuche macht. Um die PCB-Adresse herauszufinden, führen Sie netstat mit dem Argument PCB_addr aus, wobei die PCB-Adresse in Großbuchstaben geschrieben wird. Nach Beendigung von netstat finden Sie die gewünschte Verbindung, und die PCB-Adresse steht in der ersten Spalte.

Das folgende Makro übernimmt diese Aufgabe für Sie, indem es netstat ausführt, die betreffende Verbindung findet, die PCB-Adresse extrahiert und dann stcp_meters ausführt. Das Makro nimmt entweder die PCB-Adresse, wenn Sie diese bereits kennen (in diesem Fall werden die meisten der oben genannten Schritte übersprungen), oder zwei Zeichenketten, die helfen, die gewünschte Verbindung zu identifizieren. In der Benutzungsmeldung wird angegeben, dass die Strings die lokale IP-Adresse, die lokale Portnummer und die entfernte IP-Adresse und die entfernte Portnummer sein sollten. Damit wird die Verbindung eindeutig identifiziert, aber Sie könnten auch mit weniger auskommen, z. B. nur mit der lokalen Portnummer und der entfernten IP-Adresse. Wenn die angegebenen Zeichenfolgen mehr als eine Verbindung identifizieren, werden die Zähler für jede der Verbindungen angezeigt. Die netstat-Zeile wird über den Zählern angezeigt, um zu erkennen, für welche Verbindung die Zähler gelten.

Wenn Sie die Zähler aller bestehenden Verbindungen anzeigen möchten, versuchen Sie es mit dem Befehl
get_connection_meters -local ESTAB -remote :

In diesem Fall stehen die Argumente nicht für die lokale und die entfernte Adresse, sondern für den Status ESTABLISHED und jede Zeile mit einem Doppelpunkt darin.

& get_connection_meters beginnt hier
&
& get_connection_meters.cm
& Version 1.0 09-04-06
& [email protected]
&
&begin_parameters
 LOCAL-Option (-local),Zeichenkette
 Option REMOTE (-remote),Zeichenfolge
PCB Option (-pcb),Zeichenkette
&end_parameters
&
& stellt sicher, dass keine fremden Daten in die Ergebnisdatei übernommen werden
&wenn (process_type) = 'batch' &dann &do
set_ready -format aus
&echo no_command_lines
&Ende
&
&if (Länge &PCB&) > 0
&dann &do
   &if (Länge &LOCAL&) > 0
       &then &goto ERROR_ADDRESS
   &if (Länge &REMOTE&) > 0
       &dann &goto ERROR_ADDRESS
   analyze_system -request_line (string stcp_meters &PCB& -all -long) -quit
   &zurück
&Ende
&
&set_string FILE_1 (process_dir)>connect_stcp_meters_1.temp
&set_string FILE_2 (process_dir)>connect_stcp_meters_2.temp
&
&wenn (Länge &LOCAL&) = 0
    &then &goto ERROR_ADDRESS
&if (Länge &REMOTE&) = 0
    &dann &goto ERROR_ADDRESS
attach_default_output &FILE_1&
netstat -numerisch -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
&
&Anhang_Eingabe
auswerten_system
&set ZEILE 1
&label AGAIN
&set_string CONNECTION (Inhalt &FILE_1& &LINE& -hold)
&if (end_of_file &FILE_1&) = 1 &dann &do
    &wenn &LINE& = 1
       &dann &goto ERROR_NOT_FOUND
       &andernfalls &do
          Beenden
          &zurückkehren
       &Ende
&Ende
&
..display_line ============================================================
..display_line ============================================================
..display_line
..display_line &CONNECTION&
..anzeige_zeile
&set_string PCB (substr (string &CONNECTION&) 1 8)
stcp_meters &PCB& -all -long
&set LINE (calc &LINE& + 1)
&goto AGAIN
&
&
&label ERROR_NOT_FOUND
Beenden
display_line
display_line
display_line Konnte die angegebene Verbindung in der netstat-Ausgabe nicht finden
display_line &LOCAL& &REMOTE&
&zurück
&
&Label ERROR_ADDRESS
display_line
display_line Sie müssen entweder ein PCB oder BEIDE, lokale und entfernte IP:Port, eingeben
display_line Verwendung:
display_line ' get_connection_meters -pcb PCB'
display_line ' oder'
display_line ' get_connection_meters -local IP:PORT -remote IP:PORT'
&Rückgabe
&
& get_connection_meters endet hier

© 2024 Stratus Technologies.