日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美绿帽合集videosex | 在线精品一区二区三区 | 国产乱子伦精品无码码专区 | 天天躁日日躁狠狠躁伊人 | 国产三级午夜理伦三级 | 久久香焦 | 视频成人免费 | 秋霞福利视频 | 欧美 国产 日本 | www.操 | 欧美日韩一区二区不卡 | 欧美乱欲视频 | 妞妞av| 99热最新在线 | 成人av在线播放网站 | 亚洲福利视频一区二区三区 | 日韩精品999 | 无码人妻精品一区二区三 | 亚洲精品人妻av | 日韩免费av网站 | www.一级片 | 免费特黄视频 | 国产精品视频入口 | 黑人玩弄人妻一区二区三区 | 操她视频在线观看 | 欧美人与性动交g欧美精器 国产在线视频91 | 黄三级 | 天天干狠狠操 | 天堂av电影在线观看 | 免费黄色入口 | 精品视频一二三区 | 欧美综合一区二区 | 国产成人毛片 | 男人干女人视频 | 欧洲亚洲女同hd | 成年人黄色免费网站 | 中文字幕一区二区三区不卡 | 久久99久久99精品蜜柚传媒 | 午夜免费福利小电影 | 黄网址在线 | 亚洲精品1区2区 | 最新视频 - 88av | 在线观看中文字幕2021 | 成人在线影片 | 日韩欧美一区二区视频 | 国产麻豆视频 | 国产精品爽爽爽 | 日韩一级成人 | 在线中文字幕观看 | 日日躁夜夜躁白天躁晚上躁91 | 久久蜜桃av一区二区天堂 | 久草青青视频 | 成人免费视频播放 | 久久影视一区二区 | 裸体裸乳被免费看视频 | 成人在线视频网站 | 亚洲成av人片一区二区 | 男女男精品视频 | 日韩精品一区二区三区在线观看 | 欧美夜夜爽 | 色女人综合 | 欧美黄片一区二区三区 | 亚洲狠狠干| 嫩草在线播放 | 涩涩网站在线看 | 日韩美女毛片 | 91黄色小视频 | 三级欧美日韩 | 乱xxxxx普通话对白 | 国产中文字幕在线视频 | 三级视频网址 | 久久两性视频 | 岛国av中文字幕 | 日韩中文字幕在线观看 | 91亚洲国产 | 韩国三级做爰视频 | 制服.丝袜.亚洲.中文.综合 | 国产精品一区二区三区免费 | a在线免费观看 | 91视频久久久久 | 国产美女久久久久 | 日本视频在线免费观看 | 强行糟蹋人妻hd中文 | 秘密基地在线观看完整版免费 | 久草婷婷 | 91国偷自产一区二区三区女王 | 99久久婷婷国产综合精品电影 | 欧美在线观看一区二区三区 | 成人激情小说网站 | jizz国产在线观看 | 午夜激情视频在线播放 | 97一区二区三区 | 亚洲精品第一页 | 成人毛片视频在线观看 | 超碰免费97 | 97精品一区二区视频在线观看 | 国产精品极品 | 中文字幕影院 | 欧美亚洲视频在线观看 |