在 Linux 2.6.32 上,如果您在负载非常大的系统(例如 Web 服务器)上读取(例如 cat)/proc/net/tcp,您会发现读取 100K 条目需要超过 30 秒。那是很长一段时间了。
幕后发生了什么?是否有锁定发生?
许多人提到“ss”命令的速度。 'ss' 命令做了什么而 'cat /proc/net/tcp' 或 'netstat' 没有做这使得它更快?
答案1
ss
使用AF_NETLINK
套接字层与内核对话。这是一个较低级别的协议,但允许快速且大块地传输数据。 CentOS 7 上的快速strace
显示它将传输窗口设置为 1Mb。