我想知道是否有任何方法来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
选项相关的值),但这可能是不值得的。