Saya sedang mengerjakan perangkat lunak yang menghubungkan ke server data Real Time (menggunakan TCP) dan saya memiliki beberapa koneksi yang terputus. Dugaan saya adalah bahwa klien tidak membaca data yang datang dari server dengan cukup cepat. Karena itu saya ingin memonitor soket TCP saya. Untuk ini saya menemukan alat "ss".
Alat ini memungkinkan untuk melihat status setiap soket - inilah contoh baris dari output perintah ss -inm 'src *:50000'
ESTAB 0 0 184.7.60.2:50000 184.92.35.104:1105
mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40
Pertanyaan saya adalah: apa arti bagian memori? Melihat kode sumber alat saya menemukan bahwa data berasal dari struktur kernel ( sock
in sock.h
). Lebih tepatnya, itu berasal dari ladang:
r = sk->sk_rmem_alloc
w = sk->sk_wmem_queued;
f = sk->sk_forward_alloc;
t = sk->sk_wmem_alloc;
Apakah ada yang tahu apa artinya? Dugaan saya adalah:
rmem_alloc
: ukuran buffer masukwmem_alloc
: ukuran buffer keluarsk_forward_alloc
: ???sk->sk_wmem_queued
: ???
Berikut ini ukuran buffer saya:
net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_mem = 786432 1048576 1572864
net.core.rmem_default = 110592
net.core.wmem_default = 110592
net.core.rmem_max = 1048576
net.core.wmem_max = 131071