Was für ein Server? Welches Betriebssystem? Wenn es ein Webserver ist, welcher? Ihre Auswahl an Tags hilft überhaupt nicht.
John Gardeniers
Beachten Sie, dass HTTP normalerweise keine Verbindungen unterhält. Daher stellen Benutzer nur vorübergehend eine Verbindung her, um eine Webseite abzurufen, und trennen sie dann sofort. Wenn Sie sich nur offene Verbindungen ansehen, erhalten Sie nicht die Anzahl der Personen, die Ihre Website anzeigen.
Chris S
Antworten:
25
Es gibt ungefähr zig Möglichkeiten, dies zu tun, aber:
netstat | grep http | wc -l
Beachten Sie, dass http ein zustandsloses Protokoll ist. Jede Zeile kann einen Client darstellen, der mehrere Sockets öffnet, um verschiedene Dateien (CSS, Bilder usw.) abzurufen, die in einem Wartezustand für eine Weile hängen bleiben.
Im Folgenden finden Sie einige Befehle von netstat, mit denen Sie die Anzahl der Verbindungen eines Servers überprüfen können.
Um alle aktiven Internetverbindungen zu den Servern anzuzeigen, sind nur hergestellte Verbindungen enthalten.
netstat -na
Um nur aktive Internetverbindungen zum Server an Port 80 anzuzeigen und die Ergebnisse zu sortieren, müssen Sie viele Verbindungen erkennen, die von einer IP stammen
netstat -an | grep :80 | sort
Anzeigen der Liste aller beteiligten IP-Adressen, anstatt nur zu zählen.
Ich weiß, dass dies eine alte Frage ist, aber ich habe sie gefunden, als ich nach einer ordentlichen Methode gesucht habe, um alle eingehenden Verbindungen zu einem bestimmten Port zu zählen. Das Problem bei einer umfassenden Suche nach einem Port besteht darin, dass Sie auch ausgehende Verbindungen aufnehmen und Ihre Nummern verzerren.
Z.B:
tcp 0 0 10.224.38.158:8080 10.225.239.6:38194 ESTABLISHED
tcp 0 0 10.224.38.158:8080 10.225.239.6:56825 ESTABLISHED
tcp 0 0 10.224.38.158:51512 10.226.194.28:8080 ESTABLISHED
tcp 0 0 10.224.38.158:51960 10.226.194.28:8080 TIME_WAIT
tcp 0 0 10.224.38.158:46937 10.226.194.28:8080 ESTABLISHED
tcp 0 0 10.224.38.158:51331 10.226.194.28:8080 TIME_WAIT
tcp 0 0 10.224.38.158:8080 10.225.239.6:29634 ESTABLISHED
Ein wahlloses grep -c oder awk | wc -l würde "7" zurückgeben, aber es gibt tatsächlich nur "3" eingehende Verbindungen. Wie auch immer, ich habe keinen würdevollen Weg gefunden, dies zu tun, und mein awk-fu ist es nicht, aber ich habe mich letztendlich für netstat -an entschieden, awk zu verwenden, um nur die Spalte "lokale Adresse" zu drucken und die Instanzen des zu zählen Hafen, den ich suche.
netstat -an | grep -c 8080
AUSGABE: 91
netstat -an | awk '{print $4}' | grep -c 8080
AUSGABE: 31
Also 31 angeschlossene Sockets an Port 8080. Ich hoffe das hilft. Wenn jemand eine präzisere Methode kennt, teilen Sie diese bitte mit.
Wann immer Sie verwenden awkund grepin schneller Folge, besteht die Möglichkeit, dass awkallein die Arbeit erledigt wird. netstat -an | awk '$5 ~ /:8080$/ { C++ } END { print C }'
Antworten:
Es gibt ungefähr zig Möglichkeiten, dies zu tun, aber:
Beachten Sie, dass http ein zustandsloses Protokoll ist. Jede Zeile kann einen Client darstellen, der mehrere Sockets öffnet, um verschiedene Dateien (CSS, Bilder usw.) abzurufen, die in einem Wartezustand für eine Weile hängen bleiben.
quelle
Im Folgenden finden Sie einige Befehle von netstat, mit denen Sie die Anzahl der Verbindungen eines Servers überprüfen können.
Um alle aktiven Internetverbindungen zu den Servern anzuzeigen, sind nur hergestellte Verbindungen enthalten.
Um nur aktive Internetverbindungen zum Server an Port 80 anzuzeigen und die Ergebnisse zu sortieren, müssen Sie viele Verbindungen erkennen, die von einer IP stammen
Anzeigen der Liste aller beteiligten IP-Adressen, anstatt nur zu zählen.
quelle
Wenn Ihr Webserver Apache ist, können Sie auch die Serverstatusseite verwenden (nachdem Sie sie aktiviert haben).
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe sie gefunden, als ich nach einer ordentlichen Methode gesucht habe, um alle eingehenden Verbindungen zu einem bestimmten Port zu zählen. Das Problem bei einer umfassenden Suche nach einem Port besteht darin, dass Sie auch ausgehende Verbindungen aufnehmen und Ihre Nummern verzerren.
Z.B:
Ein wahlloses grep -c oder awk | wc -l würde "7" zurückgeben, aber es gibt tatsächlich nur "3" eingehende Verbindungen. Wie auch immer, ich habe keinen würdevollen Weg gefunden, dies zu tun, und mein awk-fu ist es nicht, aber ich habe mich letztendlich für netstat -an entschieden, awk zu verwenden, um nur die Spalte "lokale Adresse" zu drucken und die Instanzen des zu zählen Hafen, den ich suche.
AUSGABE: 91
AUSGABE: 31
Also 31 angeschlossene Sockets an Port 8080. Ich hoffe das hilft. Wenn jemand eine präzisere Methode kennt, teilen Sie diese bitte mit.
quelle
awk
undgrep
in schneller Folge, besteht die Möglichkeit, dassawk
allein die Arbeit erledigt wird.netstat -an | awk '$5 ~ /:8080$/ { C++ } END { print C }'