Ich möchte wissen, wie viele Personen mit meinem Server verbunden sind. Da ich Kometenanwendungen mache, ist dies wichtig
Ich möchte wissen, wie viele Personen mit meinem Server verbunden sind. Da ich Kometenanwendungen mache, ist dies wichtig
Antworten:
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.
netstat -n -p | grep SYN_REC | sort -u
Wenn Ihr Webserver Apache ist, können Sie auch die Serverstatusseite verwenden (nachdem Sie sie aktiviert haben).
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.
awk
und grep
in schneller Folge, besteht die Möglichkeit, dass awk
allein die Arbeit erledigt wird. netstat -an | awk '$5 ~ /:8080$/ { C++ } END { print C }'