Назад | Перейти на главную страницу

Использование сетевого буфера

Я столкнулся с некоторыми проблемами с моим приложением, и мне любопытно узнать об использовании сетевого буфера в любой момент.

Я использую Linux-машину CentOS 6.

Я знаю, что значения по умолчанию присутствуют в / proc / sys / net / core /

Но мне не удалось найти текущее использование буферов. Если у кого-то есть какие-либо сведения о том, как найти текущее использование, сообщите мне.

Заранее спасибо.

Если ты бежишь ss или netstat ценности Recv-Q и Send-Q произвести этот вывод.

I.E

$ 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    

С головы до ног, попробуй ss -m - должен печатать размеры очереди сокетов, передавая вывод через grep/cut/awk следует подвести итог.