查找正在运行的进程的so_sndbuf

我想知道是否有任何方法来find一个积极运行的进程(如Apache或Nginx)的tcp so_sndbuf。 我知道tcp_wmem设置了默认值,但是我不知道我正在使用的服务器程序是否设置了它们自己的。

我的目的是,我试图设置初始窗口(IW)(请参阅此链接为什么)的TCP连接。 我从google看了这篇文章 ,他们build议把你的tcp_wmem默认值改成MSS * IW。 不过,我担心,程序可能会设置自己的so_sndbuf而不是使用tcp_wmem,所以我想仔细检查。

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

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

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

这将产生这样的输出:

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

您也可以使用函数中断的魔术来覆盖setsockopt()函数调用(例如,打印出与SO_SNDBUF选项相关的值),但这可能是不值得的。