日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

【必看】Linux 下的 TCP参数优化

發(fā)布時間:2025/3/20 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【必看】Linux 下的 TCP参数优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

???????TCP是一種面向廣域網(wǎng)的通信協(xié)議,目的是在跨越多個網(wǎng)絡(luò)通信時,為兩個通信端點(diǎn)之間提供一條具有下列特點(diǎn)的通信方式
?????(1)基于流的方式;
?????(2)面向連接;
?????(3)可靠通信方式;
?????(4)在網(wǎng)絡(luò)狀況不佳的時候盡量降低系統(tǒng)由于重傳帶來的帶寬開銷;
?????(5)通信連接維護(hù)是面向通信的兩個端點(diǎn)的,而不考慮中間網(wǎng)段和節(jié)點(diǎn)。

下面,講點(diǎn)實(shí)際的東西

上圖詳細(xì)描述了TCP的三次握手和四次揮手
這圖畫的不錯吧,,,所以不是我畫的,下面的相關(guān)參數(shù)陳述和優(yōu)化各位可以參照這個圖,人家畫的很不錯我自己就不獻(xiàn)丑了,,絕對不是懶得關(guān)系

下述是具體的TCP參數(shù)的優(yōu)化方案

請根據(jù)實(shí)際情況進(jìn)行優(yōu)化!!!

#表示socket監(jiān)聽的backlog(當(dāng)一個請求(request)尚未被處理或建立時,進(jìn)入backlog)上限
#限制了接收新 TCP 連接偵聽隊(duì)列的大小。對于一個經(jīng)常處理新連接的高負(fù)載 web服務(wù)環(huán)境來說,默認(rèn)的 128 太小了。大多數(shù)環(huán)境這個值建議增加到 1024 或者更多。服務(wù)進(jìn)程會自己限制偵聽隊(duì)列的大小(例如 sendmail(8) 或者 Apache),常常在它們的配置文件中有設(shè)置隊(duì)列大小的選項(xiàng)。大的偵聽隊(duì)列對防止拒絕服務(wù) DoS ***也會有所幫助。

net.core.somaxconn = 262144

#表示開啟重用。允許將TIME-WAIT sockets重新用于新的TCP連接,默認(rèn)為0,表示關(guān)閉

net.ipv4.tcp_tw_reuse = 1

#表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認(rèn)為0,表示關(guān)閉

net.ipv4.tcp_tw_recycle = 0

#keepalive的保持時間

net.ipv4.tcp_keepalive_time = 900

#表示如果套接字由本端要求關(guān)閉,這個參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時間(可改為30,一般來說FIN-WAIT-2的連接也極少)

net.ipv4.tcp_fin_timeout = 15

#用于向外連接的端口范圍

net.ipv4.ip_local_port_range = 10000 65500

#預(yù)留端口避免占用,不同的端口可以逗號隔開

net.ipv4.ip_local_reserved_ports = 50010,10050,32275

#表示那些尚未收到客戶端確認(rèn)信息的連接(SYN消息)隊(duì)列的長度,默認(rèn)為1024,加大隊(duì)列長度為819200,可以容納更多等待連接的網(wǎng)絡(luò)連接數(shù)。

net.ipv4.tcp_max_syn_backlog = 819200

#TIME_WAIT 狀態(tài)數(shù)量
#表示系統(tǒng)同時保持TIME_WAIT套接字的最大數(shù)量,如果超過這個數(shù)字,TIME_WAIT套接字將立刻被清除并打印告警信息。默認(rèn)為180000,更改為8192000.對于Apache,Nginx等服務(wù)器,上幾行參數(shù)可以很好的減少TIME_WAIT套接字?jǐn)?shù)量,但是對于Squid,效果不大。此項(xiàng)參數(shù)可以控制TIME_WAIT套接字的最大數(shù)量,避免Squid服務(wù)器被大量的TIME_WAIT套接字拖死

net.ipv4.tcp_max_tw_buckets = 8192000

#該參數(shù)用于設(shè)定系統(tǒng)中最多允許存在多少tcp套接字不被關(guān)聯(lián)到任何一個用戶文件句柄上。如果超過這個數(shù)字,沒有與用戶文件句柄關(guān)聯(lián)的tcp套接字符將立即被復(fù)位,同時給出警告信息。這個限制只是為了防止簡單的DoS工具。一般在系統(tǒng)內(nèi)存比較充足的情況下,可以增大這個參數(shù)的賦值:

net.ipv4.tcp_max_orphans = 3276800

#CONNTRACK_MAX 允許的最大跟蹤連接條目,是在內(nèi)核內(nèi)存中netfilter可以同時處理的“任務(wù)”(連接跟蹤條目)

net.netfilter.nf_conntrack_max = 250000

#tcp_synack_retries 顯示或設(shè)定 Linux 核心在回應(yīng) SYN 要求時會嘗試多少次重新發(fā)送初始 SYN,ACK 封包后才決定放棄。這是所謂的三段交握 (threeway handshake) 的第二個步驟。即是說系統(tǒng)會嘗試多少次去建立由遠(yuǎn)端啟始的 TCP 連線。tcp_synack_retries 的值必須為正整數(shù),并不能超過 255。因?yàn)槊恳淮沃匦掳l(fā)送封包都會耗費(fèi)約 30 至 40 秒去等待才決定嘗試下一次重新發(fā)送或決定放棄。tcp_synack_retries 的缺省值為 5,即每一個連線要在約 180 秒 (3 分鐘) 后才確定逾時.

net.ipv4.tcp_synack_retries = 2

#對于一個新建連接,內(nèi)核要發(fā)送多少個 SYN 連接請求才決定放棄。不應(yīng)該大于255,默認(rèn)值是5,對應(yīng)于180秒左右時間。(對于大負(fù)載而物理通信良好的網(wǎng)絡(luò)而言,這個值偏高,可修改為2.這個值僅僅是針對對外的連接,對進(jìn)來的連接,是由tcp_retries1 決定的)

net.ipv4.tcp_syn_retries = 2
#四種TCP狀態(tài)的超時時間
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 15
net.netfilter.nf_conntrack_tcp_timeout_established = 86400

#當(dāng)探測沒有確認(rèn)時,重新發(fā)送探測的頻度。缺省是75秒。

net.ipv4.tcp_keepalive_intvl = 15

#在認(rèn)定連接失效之前,發(fā)送多少個TCP的keepalive探測包。缺省值是9。這個值乘以tcp_keepalive_intvl之后決定了,一個連接發(fā)送了keepalive之后可以有多少時間沒有回應(yīng)

net.ipv4.tcp_keepalive_probes = 5

#本端試圖關(guān)閉TCP連接之前重試多少次。缺省值是7,相當(dāng)于50秒~16分鐘(取決于RTO)。如果你的機(jī)器是一個重載的WEB服務(wù)器,你應(yīng)該考慮減低這個值,因?yàn)檫@樣的套接字會消耗很多重要的資源。參見tcp_max_orphans.

net.ipv4.tcp_orphan_retries = 0

#支持更大的TCP窗口. 如果TCP窗口最大超過65535(64K), 必須設(shè)置該數(shù)值為1

net.ipv4.tcp_window_scaling = 1

#當(dāng) tcp 建立連接的 3 路握手完成后,將連接置入 ESTABLISHED 狀態(tài)并交付給應(yīng)用程序的 backlog 隊(duì)列時,會檢查 backlog 隊(duì)列是否已滿。若已滿,通常行為是將連接還原至 SYN_ACK 狀態(tài),以造成 3 路握手最后的 ACK 包意外丟失假象 —— 這樣在客戶端等待超時后可重發(fā) ACK —— 以再次嘗試進(jìn)入 ESTABLISHED 狀態(tài) —— 作為一種修復(fù)/重試機(jī)制。如果啟用 tcp_abort_on_overflow 則在檢查到 backlog 隊(duì)列已滿時,直接發(fā) RST 包給客戶端終止此連接 —— 此時客戶端程序會收到 104 Connection reset by peer 錯誤。

net.ipv4.tcp_abort_on_overflow = 1

#管理TCP的選擇性應(yīng)答,允許接收端向發(fā)送端傳遞關(guān)于字節(jié)流中丟失的序列號,減少了
段丟失時需要重傳的段數(shù)目,當(dāng)段丟失頻繁時,sack是很有益的。

net.ipv4.tcp_sack = 1

#關(guān)閉tcp的連接傳輸?shù)穆龁?#xff0c;即先休止一段時間,再初始化擁塞窗口。

net.ipv4.tcp_slow_start_after_idle = 0

#每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時,允許送到隊(duì)列的數(shù)據(jù)包的最大數(shù)目

net.core.netdev_max_backlog = 300000

#內(nèi)核分配給TCP連接的內(nèi)存,單位是Page,1 Page = 4096 Bytes,可用命令查看:
#getconf PAGESIZE
#第一個數(shù)字表示,當(dāng) tcp 使用的 page 少于 1048576 時,kernel 不對其進(jìn)行任何的干預(yù)
#第二個數(shù)字表示,當(dāng) tcp 使用了超過 1310720 的 pages 時,kernel 會進(jìn)入 “memory pressure” 壓力模式
#第三個數(shù)字表示,當(dāng) tcp 使用的 pages 超過 1572864 時(相當(dāng)于1.6GB內(nèi)存),就會報:Out of socket memory

net.ipv4.tcp_mem = 1048576 1310720 1572864

#為每個TCP連接分配的讀、寫緩沖區(qū)內(nèi)存大小,單位是Byte
#第一個數(shù)字表示,為TCP連接分配的最小內(nèi)存
#第二個數(shù)字表示,為TCP連接分配的缺省內(nèi)存
#第三個數(shù)字表示,為TCP連接分配的最大內(nèi)存
#一般按照缺省值分配,下面的例子就是讀寫均為8KB,共16KB
#1572864*16kb=25165824kb 相當(dāng)于26G內(nèi)存

net.ipv4.tcp_rmem = 4096 8192 16384

#默認(rèn)的TCP數(shù)據(jù)接收窗口大小(字節(jié))。

net.core.rmem_default = 1048576

#最大的TCP數(shù)據(jù)接收窗口(字節(jié))。

net.core.rmem_max = 15728640

#為自動調(diào)優(yōu)定義每個 socket 使用的內(nèi)存。
#第一個值是為 socket 的發(fā)送緩沖區(qū)分配的最少字節(jié)數(shù)。
#第二個值是默認(rèn)值(該值會覆蓋 wmem_default),緩沖區(qū)在系統(tǒng)負(fù)載不重的情況下可以增長到這個值。
#第三個值是發(fā)送緩沖區(qū)空間的最大字節(jié)數(shù)(該值會覆蓋 wmem_max)。

net.ipv4.tcp_wmem = 256000 768000 4194304

#各種類型的socket默認(rèn)讀寫緩沖器大小

net.core.wmem_default = 1048576

#各種類型的socket默認(rèn)讀寫緩沖器最大值

net.core.wmem_max = 5242880

#panic error中自動重啟,等待timeout為20秒

kernel.panic = 20

#表示系統(tǒng)級別的能夠打開的文件句柄的數(shù)量。是對整個系統(tǒng)的限制,并不是針對用戶的。

fs.file-max = 6553560

上述很多參數(shù)值得修改,并非是絕對要這樣,各位還是要根據(jù)實(shí)際需求進(jìn)行參照

思量

那這些參數(shù)如何優(yōu)化呢?我怎么知道如何修改比較合理呢
我的建議是,基礎(chǔ)優(yōu)化之后,進(jìn)行監(jiān)控,查看tcp的資源消耗和具體卡在哪里
下面是一些Linux系統(tǒng)下面TCP監(jiān)控的大概獲取方式,僅供參考

查看當(dāng)前的連接數(shù):
代碼如下:

grep ip_conntrack /proc/slabinfo
ip_conntrack 38358 64324 304 13 1 : tunables 54 27 8 : slabdata 4948 4948 216

獲取TCP各個握手揮手的實(shí)際當(dāng)前數(shù)值
代碼如下:

# netstat -an | awk '/^tcp/ {++state[$6]} END {for (key in state) print key,"\t",state[key]}'
TIME_WAIT 1832
CLOSE_WAIT 360
FIN_WAIT2 12
ESTABLISHED 3588
SYN_RECV 148
CLOSING 7
LAST_ACK 19
LISTEN 59

查出目前 ip_conntrack 的排名:
代碼如下:

$ cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

總結(jié)

還是最好根據(jù)實(shí)際情況進(jìn)行參數(shù)調(diào)整,才最科學(xué),不要盲目加大或者一刀切為上策

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的【必看】Linux 下的 TCP参数优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人高清免费 | 校园sm主奴调教1v1罚视频 | 日韩精品免费一区二区三区竹菊 | 欧美精品三区 | 久久一卡二卡 | 日韩国产精品一区二区 | jizz内谢中国亚洲jizz | 日韩成人av网站 | av看片| 国产亚洲精品成人av在线 | 激情啪啪网 | 九九影院最新理论片 | 欧美被狂躁喷白浆精品 | 成人av影视在线观看 | 国产a一区二区三区 | 无码一区二区三区 | 免费成人小视频 | 日韩簧片 | 亚洲av片在线观看 | 日本综合色 | 亚洲一区二区在线免费 | 夜色一区 | 日韩成人av网址 | 日本不卡三区 | 中文字幕一二三 | 向日葵视频在线播放 | 不卡一区二区在线观看 | 黄色网址大全免费 | 成人做爰www免费看视频网站 | 人人妻人人爽人人澡人人精品 | 日韩a级一片 | 国产一区二区三区免费看 | 7788色淫网站小说 | 香港三级日本三级三69 | 91蜜桃| av免费视屏 | 亚洲国产日韩在线一区 | 国产精品夫妻 | 国产精品久久久久毛片 | 欧美日韩在线a | 国产探花一区二区 | 美女一二三区 | 国产精品福利一区二区三区 | 亚洲少妇色 | 国产精品人人爽人人爽 | 日韩中文字幕免费观看 | 九九热精彩视频 | 久久综合桃花网 | 黄色中文字幕在线观看 | 午夜综合网 | 国产精品亚洲一区二区三区 | 国产精品第3页 | 黄页网站在线看 | 无码人妻av免费一区二区三区 | 黄色顶级片 | www.香蕉视频在线观看 | 久久sese| 亚洲国产精品女人久久久 | 正在播放经典国语对白 | 人操人操 | 亚洲成人免费看 | 精品国产一二三四区 | 亚洲精品福利网站 | 国产九九热 | 亚洲av无码国产精品麻豆天美 | 日韩视频一区二区 | 中文字幕一二三四区 | 中文字幕无码日韩专区免费 | juliaannxxxxx高清 黄页网站在线播放 | 国产成人在线视频网站 | 九九视频在线观看 | 香蕉久久av| 中文无码精品一区二区三区 | 少妇久久久 | 夜夜骚av | 9色在线| 国产精品一区二区av白丝下载 | 18色av | 日韩一级性| 8090理论片午夜理伦片 | 日韩av高清在线播放 | 日韩欧美国产亚洲 | 51精品| 中文字幕色站 | 在线日韩成人 | 亚洲欧美日本在线 | 亚洲热在线视频 | 欧美日韩在线播放 | 久久久久亚洲AV成人 | 国产裸体网站 | 黄色动漫免费在线观看 | 国产精品一区二区三区四区 | 亚洲精品aaaaa | jizz欧洲 | 森泽佳奈作品在线观看 | 国产亚州av| 国产精品二 | 中文字幕在线观看免费 | 神马久久av|