亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

Linux下Tcp Socket通信優化與問題排查

2023-10-27 07:01:29
6
0

一. 優化

1. TPC接收窗口
  • 問題 : 當TCP的接收窗口隊列阻塞 -> 發送方繼續發 -> 接受方丟掉 -> 發送方重傳 -> 網絡變糟糕
  • 解決 : 接收方把接收緩存的大小告訴發送方 -> 接收緩存滿了 -> 發送方不能發送
# 調大接收窗口緩存大小
net.ipv4.tcp_rmem = "40960 873800 41943040"
net.core.rmem_max = 41943040
net.core.rmem_default = 873800

# 打開win scale
net.ipv4.tcp_window_scaling = 1
2. TCP擁塞窗口
# 優化擁塞窗口的初始大小
3. TIME_WAIT狀態的回收
# 調整TIME_WAIT的回收時間
$ vi /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

net.core.somaxconn = 2048
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 10000
net.core.netdev_max_backlog = 20000

net.ipv4.tcp_rmem = 7168 11264 16777216
net.ipv4.tcp_wmem = 7168 11264 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_max_tw_buckets=180000
fs.file-max = 1000000

二. 問題

1. 連接超時
  • 問題 :
# 查看是否數量很多,代碼不同不同請求連接過多,Syn隊列溢出,丟棄連接
$ netstat -anp | grep SYN_RECV/TIME_WAIT
  • 解決 : 更改配置文件數量,打開syncookie

  • 問題 :
# 前面數字一直快速增長,客戶端大量請求,造成accept隊列滿,之后來syn包也會丟棄
# 服務端接收到syn后,先看syn隊列,再看accept隊列,有一個滿則丟棄syn
$ netstat -s | grep -i listen
  • 解決 : 增加accept隊列長度--配置文件, net.core.somaxconn=8192. 計算公式:Len of accept queue = min(backlog + 1,somaxconn)

  • 問題 : 客戶端經常連接失敗
# 四元組:源ip、目的ip、源port、目的port
# 一個客戶端連接一個server只能使用固定端口范圍
# TIME_WAIT狀態的socket不能復用
  • 解決 : 客戶端解決,修改socket配置文件
# 調動端口使用范圍
$ --net.ipv4.ip_local_port_range="1024 65535"
# 復用time_out狀態端口
$ --net.ipv4.tcp_tw_reuse=1
$ net.ipv4.tcp_timestamp =1
# 加快TIME_OUT狀態端口釋放速度
$ net.ipv4.tcp_tw_recyle=1
$ net.ipv4.tcp_timestamp=1
2. too many open files
# 用戶程序沒有調用close函數,不會自動釋放--程序異常
$ netsata -anp | grep CLOSE_WAIT
0條評論
作者已關閉評論
華****裕
14文章數
0粉絲數
華****裕
14 文章 | 0 粉絲
原創

Linux下Tcp Socket通信優化與問題排查

2023-10-27 07:01:29
6
0

一. 優化

1. TPC接收窗口
  • 問題 : 當TCP的接收窗口隊列阻塞 -> 發送方繼續發 -> 接受方丟掉 -> 發送方重傳 -> 網絡變糟糕
  • 解決 : 接收方把接收緩存的大小告訴發送方 -> 接收緩存滿了 -> 發送方不能發送
# 調大接收窗口緩存大小
net.ipv4.tcp_rmem = "40960 873800 41943040"
net.core.rmem_max = 41943040
net.core.rmem_default = 873800

# 打開win scale
net.ipv4.tcp_window_scaling = 1
2. TCP擁塞窗口
# 優化擁塞窗口的初始大小
3. TIME_WAIT狀態的回收
# 調整TIME_WAIT的回收時間
$ vi /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

net.core.somaxconn = 2048
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 10000
net.core.netdev_max_backlog = 20000

net.ipv4.tcp_rmem = 7168 11264 16777216
net.ipv4.tcp_wmem = 7168 11264 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_max_tw_buckets=180000
fs.file-max = 1000000

二. 問題

1. 連接超時
  • 問題 :
# 查看是否數量很多,代碼不同不同請求連接過多,Syn隊列溢出,丟棄連接
$ netstat -anp | grep SYN_RECV/TIME_WAIT
  • 解決 : 更改配置文件數量,打開syncookie

  • 問題 :
# 前面數字一直快速增長,客戶端大量請求,造成accept隊列滿,之后來syn包也會丟棄
# 服務端接收到syn后,先看syn隊列,再看accept隊列,有一個滿則丟棄syn
$ netstat -s | grep -i listen
  • 解決 : 增加accept隊列長度--配置文件, net.core.somaxconn=8192. 計算公式:Len of accept queue = min(backlog + 1,somaxconn)

  • 問題 : 客戶端經常連接失敗
# 四元組:源ip、目的ip、源port、目的port
# 一個客戶端連接一個server只能使用固定端口范圍
# TIME_WAIT狀態的socket不能復用
  • 解決 : 客戶端解決,修改socket配置文件
# 調動端口使用范圍
$ --net.ipv4.ip_local_port_range="1024 65535"
# 復用time_out狀態端口
$ --net.ipv4.tcp_tw_reuse=1
$ net.ipv4.tcp_timestamp =1
# 加快TIME_OUT狀態端口釋放速度
$ net.ipv4.tcp_tw_recyle=1
$ net.ipv4.tcp_timestamp=1
2. too many open files
# 用戶程序沒有調用close函數,不會自動釋放--程序異常
$ netsata -anp | grep CLOSE_WAIT
文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0