如何检查 Linux 服务器向互联网开放的连接数?

如何检查 Linux 服务器向互联网开放的连接数?

我们遇到一个问题,即某个端点的响应时间对于一台服务器来说特别长,而对于其他服务器则没有。此外,我们发现此问题发生在互联网中的所有端点上,例如“curl 'ww.google.com'”。进一步分析让我们知道这只发生在特定时间。所以我想知道如何列出主机与互联网建立的 HTTP 连接。请帮我解决这个问题。

答案1

如果您想要列出从本地 Linux 计算机到远程计算机的端口 80 上的活动连接数,您可以使用 netstat 列出活动连接,并从外部地址列中获取特定端口:

netstat -tnap | awk '{print$5}' | grep :80 | wc -l

netstat -tnap 将为您提供所有活动连接,然后您可以使用 awk 仅列出在外部地址的端口 80 上建立的连接,仅列出第五列,然后在外部地址的端口 80 上 greping 连接将为您提供所有远程地址,然后您可以通过管道获取到 wc -l 的连接数。

您还可以使用 MadHatter 建议的 ss - 套接字统计信息,因为 netstat 已被弃用并被 ss 取代

ss -tan | awk '{print$5}' | grep :80 | wc -l

答案2

除了 netstat 或 ss 之外,正如其他人所建议的,我发现lsof(列出打开的文件) 也很有用。-i使用选项,它会列出网络文件或套接字,因为在 UNIX 中一切都是文件。使用-i4,您可以将其缩小到 IPv4,然后使用:80或分别指定或:443的端口号。查看 ls 的手册页以获取更多详细信息。httphttps

 
[root@kauai tmp]# lsof -i4:80 -n
命令 PID 用户 FD 类型 设备大小/关闭节点名称
firefox 4128 daniel 76u IPv4 111733311 0t0 TCP 192.168.10.103:50500->198.252.206.149:http (已建立)
firefox 4128 daniel 96u IPv4 112109229 0t0 TCP 192.168.10.103:51201->198.252.206.149:http (已建立)
firefox 4128 daniel 108u IPv4 111452598 0t0 TCP 192.168.10.103:50410->198.252.206.149:http (已建立)
时钟应用程序 31704 daniel 21u IPv4 126088871 0t0 TCP 192.168.10.103:55146->23.67.61.171:http (已建立)

[root@kauai tmp]# lsof -i4:443 -n
命令 PID 用户 FD 类型 设备大小/关闭节点名称
firefox 4128 daniel 52u IPv4 125964214 0t0 TCP 192.168.10.103:45435->23.67.118.140:https (已建立)

相关内容