Использование сетевого буфера
Я сталкиваюсь с некоторыми проблемами с моим Приложением, и мне любопытно узнать использование сетевого буфера в любой момент.
Я использую машину CentOS 6 Linux.
Я знаю, что значения по умолчанию присутствуют в / proc / sys / net / core /
Но мне не удалось найти текущее использование буферов. Если кто-нибудь знает, как найти текущее использование, пожалуйста, дайте мне знать.
Заранее спасибо.
2 ответа
Решение
Если вы бежите ss
или же netstat
ценности Recv-Q
а также Send-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
С макушки головы, попробуй ss -m
- должен печатать размеры очереди сокетов, пропуская вывод через grep
/cut
/awk
следует подвести итог.