网络缓冲区使用情况

网络缓冲区使用情况

我的应用程序遇到了一些问题,并且很想知道任何特定时刻的网络缓冲区使用情况。

我正在使用 CentOS 6 Linux 机器。

我知道默认值存在于 /proc/sys/net/core/

但是我没能成功找到缓冲区的当前使用情况。如果有人知道如何找到当前使用情况,请告诉我。

提前致谢。

答案1

如果您运行ssnetstatRecv-QSend-Q产生此输出。

IE

$ ss -nt
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
ESTAB      203    0               192.168.1.2:36122       198.xxx.xxx.xxx:80    
CLOSE-WAIT 1      0               192.168.1.2:43870       140.xxx.xxx.xxx:80    

我添加了一个简单的 python 程序来演示这一点。

#/usr/bin/python
from time import sleep
from socket import *
import subprocess

if __name__ == "__main__":
  sock = socket(AF_INET, SOCK_STREAM)
  sock.setsockopt(IPPROTO_TCP, TCP_CORK, 1)
  sock.connect(('www.google.com', 80))
  length = sock.send("GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n")
  sport = sock.getsockname()[1]
  print "Length of sent data: {0}".format(length)
  subprocess.call(["ss" ,"-nt", "sport", "=", ":{0}".format(sport)])
  sock.close()

产生

Length of sent data: 40
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
ESTAB      0      40              192.168.1.2:34259       173.194.41.180:80    

答案2

我首先想到的是,尝试- 应该打印套接字队列大小,通过//ss -m传递输出应该将它们总结起来。grepcutawk

相关内容