tcp內存占用/socket內存占用


net.ipv4.tcp_mem

內核分配給TCP連接的內存,單位是Page,1 Page = 4096 Bytes,可用命令查看:

#getconf PAGESIZE
4096

net.ipv4.tcp_mem = 196608   262144  393216
  • 第一個數字表示,當 tcp 使用的 page 少於 196608 時,kernel 不對其進行任何的干預
  • 第二個數字表示,當 tcp 使用了超過 262144 的 pages 時,kernel 會進入 “memory pressure” 壓力模式
  • 第三個數字表示,當 tcp 使用的 pages 超過 393216 時(相當於1.6GB內存),就會報:Out of socket memory

net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem

為每個TCP連接(一個socket)分配的讀、寫緩沖區內存大小,單位是Byte

net.ipv4.tcp_rmem = 4096        8192    4194304
net.ipv4.tcp_wmem = 4096       8192    4194304
  • 第一個數字表示,為TCP連接分配的最小內存
  • 第二個數字表示,為TCP連接分配的缺省內存
  • 第三個數字表示,為TCP連接分配的最大內存

一般按照缺省值分配,上面的例子就是讀寫均為8KB,共16KB

1.6GB TCP內存能容納的連接數,約為 1600MB/16KB = 100K = 10萬

4.0GB TCP內存能容納的連接數,約為 4000MB/16KB = 250K = 25萬

當然socket還包含文件描述符的內存占用,以及真正接收和發送時,緩沖區不見得是滿的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM