Networking

網路緩衝區使用

  • February 20, 2014

我的應用程序遇到了一些問題,並且很想知道任何給定時刻的網路緩衝區使用情況。

我正在使用 CentOS 6 linux 機器。

我知道預設值存在於 /proc/sys/net/core/

但我沒有成功找到緩衝區的目前使用情況。如果有人對如何找到目前用法有任何線索,請告訴我。

提前致謝。

如果您執行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    

引用自:https://serverfault.com/questions/577173