查找正在运行的进程的 so_sndbuf

查找正在运行的进程的 so_sndbuf

我想知道是否有任何方法可以找到正在运行的进程(例如 apache 或 nginx)的 tcp so_sndbuf。我知道 tcp_wmem 设置了默认值,但我不确定我使用的服务器程序是否设置了自己的值。

我这样做的目的是尝试设置初始窗口 (IW)(参见此关联(为什么)用于 tcp 连接。我查看了这个来自 google,他们建议将 tcp_wmem 默认值更改为 MSS*IW。但是,我担心程序可能会设置自己的 so_sndbuf 而不是使用 tcp_wmem,所以我想再检查一下。

我正在使用 Linux 内核 2.6.18-194.26.1.el5(CentOS)。

答案1

我不知道如何审问现在正在运行的进程,但您可以通过在strace系统调用跟踪实用程序的控制下运行程序来回答您的问题。例如:

# strace -f -e trace=setsockopt /path/to/program

这将产生如下输出:

setsockopt(3, SOL_SOCKET, SO_SNDBUF, [98304], 4) = 0

你也可以使用函数插入来覆盖setsockopt()功能调用(例如,打印出与选项相关的值SO_SNDBUF),但这可能不值得付出努力。

相关内容