如何检查当前打开了多less个HTTP连接?

我想知道有多less人连接到我的服务器。 因为我正在做彗星应用,所以这很重要

有几十万种方法可以做到这一点,但是:

netstat | grep http | wc -l 

请记住,http是一个无状态的协议。 每一行可以代表一个客户端打开多个套接字来抓取不同的文件(CSS,图像等),在一段时间等待状态下,会暂停一段时间。

下面是netstat的一些命令,你可以用它来检查一个服务器的连接数量。

要显示所有到服务器的活动Internet连接,只包含build立的连接。

 netstat -na 

要仅显示端口80上的服务器的活动Internet连接并对结果进行sorting,请允许识别来自一个IP的多个连接

 netstat -an | grep :80 | sort 

显示涉及的所有IP地址的列表,而不是只计数。

 netstat -n -p | grep SYN_REC | sort -u 

我知道这是一个古老的问题,但我发现它,同时寻找一个简单的方法来计算所有传入连接到一个给定的端口。 一揽子search端口的麻烦是,你也会拿起传出连接,歪曲你的号码。

例如:

 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 

不分青红皂白的grep -c或awk | wc -l会返回“7”,但实际上只有“3”入站连接。 无论如何,我还没有find一个优雅的方式来做到这一点,我的awk-fu不是这样,但我最终selectnetstat -an,使用awk打印只有“本地地址”列,并计数的实例港口我正在寻找。

$ netstat -an | grep -c 8080 91

$ netstat -an | awk'{print $ 4}'| grep -c 8080 31

所以,在端口8080连接31个sockets。我希望有帮助。 如果有人知道一个更简洁的方式来做到这一点,那么请分享它。

如果你的web服务器是apache,你也可以使用服务器状态页面(启用后)。