Linux 內(nèi)核優(yōu)化-調(diào)大TCP最大連接數(shù)

原文地址: https://blog.csdn.net/just_shunjian/article/details/78288229

一、tcp 概述

1做修、服務(wù)器如何標(biāo)識tcp連接沐扳?
在tcp應(yīng)用中莉掂,server事先在某個固定端口監(jiān)聽皇型,client主動發(fā)起連接,經(jīng)過三路握手后建立tcp連接型檀。

在確定最大連接數(shù)之前冗尤,先來看看系統(tǒng)如何標(biāo)識一個tcp連接。系統(tǒng)用一個4四元組來唯一標(biāo)識一個TCP連接:{local ip, local port,remote ip,remote port}胀溺。

(1)裂七、client最大tcp連接數(shù)

client每次發(fā)起tcp連接請求時,除非綁定端口仓坞,通常會讓系統(tǒng)選取一個空閑的本地端口(local port)背零,該端口是獨占的,不能和其他tcp連接共享无埃。
tcp端口的數(shù)據(jù)類型是unsigned short徙瓶,因此本地端口個數(shù)最大只有65536,端口0有特殊含義嫉称,不能使用侦镇,這樣可用端口最多只有65535,所以在全部作為client端的情況下澎埠,最大tcp連接數(shù)為65535虽缕,這些連接可以連到不同的server ip始藕。

(2)蒲稳、server最大tcp連接數(shù)

server通常固定在某個本地端口上監(jiān)聽氮趋,等待client的連接請求。不考慮地址重用(unix的SO_REUSEADDR選項)的情況下江耀,即使server端有多個ip剩胁,本地監(jiān)聽端口也是獨占的,
因此server端tcp連接4元組中只有remote ip(也就是client ip)和remote port(客戶端port)是可變的祥国,因此最大tcp連接為客戶端ip數(shù)×客戶端port數(shù)昵观,對IPV4,不考慮ip地址分類等因素舌稀,
最大tcp連接數(shù)約為2的32次方(ip數(shù))×2的16次方(port數(shù))啊犬,也就是server端單機最大tcp連接數(shù)約為2的48次方。

而tcp連接受到文件句柄和端口限制壁查,這直接限制tcp服務(wù)器對服務(wù)器的連接數(shù)量

二觉至、文件限制

1、用戶級別

(1)睡腿、查看Linux系統(tǒng)用戶最大打開的文件限制

#ulimit -n
65535

(2)语御、修改打開文件限制

vim /etc/security/limits.conf
root soft nofile 102400
root hard nofile 102400
其中root指定了要修改哪個用戶的打開文件數(shù)限制。
可用'*'號表示修改所有用戶的限制席怪;soft或hard指定要修改軟限制還是硬限制应闯;
102400則指定了想要修改的新的限制值,即最大打開文件數(shù)(請注意軟限制值要小于或等于硬限制)

(3)挂捻、修改/etc/pam.d/login

session required /lib/security/pam_limits.so
這是告訴Linux在用戶完成系統(tǒng)登錄后碉纺,應(yīng)該調(diào)用pam_limits.so模塊來設(shè)置系統(tǒng)對該用戶可使用的各種資源數(shù)量的最大限制(包括用戶可打開的最大文件數(shù)限制)。
而pam_limits.so模塊就會從/etc/security/limits.conf文件中讀取配置來設(shè)置這些限制值细层。

2惜辑、Linux系統(tǒng)級別

查看Linux系統(tǒng)對同時打開文件數(shù)的硬限制:

# sysctl -a|grep file-max
fs.file-max = 65535
這表明這臺Linux系統(tǒng)最多允許同時打開(即包含所有用戶打開文件數(shù)總和)65535個文件,是Linux系統(tǒng)級硬限制疫赎,所有用戶級的打開文件數(shù)限制都不會超過這個數(shù)值盛撑。
通常這個系統(tǒng)級硬限制是Linux系統(tǒng)在啟動時根據(jù)系統(tǒng)硬件資源狀況計算出來的最佳的最大同時打開文件數(shù)限制。

(1)捧搞、修改file-max限制

vim /etc/sysctl.conf
fs.file-max = 1000000
立即生效:
# sysctl -p

三抵卫、網(wǎng)絡(luò)端口限制修改

查看Linux系統(tǒng)最大追蹤TCP連接數(shù)量:

# sysctl -a | grep ipv4.ip_conntrack_max
net.ipv4.ip_conntrack_max = 20000
這表明系統(tǒng)將對最大跟蹤的TCP連接數(shù)限制默認(rèn)為20000。

查看Linux系統(tǒng)端口范圍:

# sysctl -a | grep ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 1024 30000
注意:
每個TCP客戶端連接都要占用一個唯一的本地端口號(此端口號在系統(tǒng)的本地端口號范圍限制中)胎撇,如果現(xiàn)有的TCP客戶端連接已將所有的本地端口號占滿介粘。將不能創(chuàng)建新的TCP連接。

(1) vi /etc/sysctl.conf

net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.ip_conntrack_max = 20000
如果按上述端口范圍進(jìn)行設(shè)置晚树,則理論上單獨一個進(jìn)程最多可以同時建立60000多個TCP客戶端連接姻采。
如果按上述參數(shù)進(jìn)行設(shè)置,則理論上單獨一個進(jìn)程最多可以同時建立20000多個TCP客戶端連接爵憎。

備注:

(1)對mysql用戶可同時打開文件數(shù)設(shè)置為10240個慨亲;
(2)將Linux系統(tǒng)可同時打開文件數(shù)設(shè)置為1000000個(一定要大于對用戶的同時打開文件數(shù)限制)婚瓜;
(3)將Linux系統(tǒng)對最大追蹤的TCP連接數(shù)限制為20000個(但是,建議設(shè)置為10240刑棵;因為對mysql用戶的同時打開文件數(shù)已經(jīng)限制在10240個巴刻;且較小的值可以節(jié)省內(nèi)存);
(4)將linux系統(tǒng)端口范圍配置為1024~30000(可以支持60000個以上連接蛉签,不建議修改胡陪;默認(rèn)已經(jīng)支持20000個以上連接);

綜合上述四點碍舍,TCP連接數(shù)限制在10140個柠座。

這10240個文件中還得除去每個進(jìn)程必然打開的標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出片橡,標(biāo)準(zhǔn)錯誤愚隧,服務(wù)器監(jiān)聽 socket,進(jìn)程間通訊的unix域socket等文件锻全。

因此狂塘,當(dāng)需要對TCP連接數(shù)進(jìn)行調(diào)整時只需要調(diào)整ulimit參數(shù)。

Linux下查看tcp連接數(shù)及狀態(tài)命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

三鳄厌、Linux下TCP最大連接數(shù)限制修改

1荞胡、修改

打開文件 /etc/sysctl.conf,增加以下設(shè)置
該參數(shù)設(shè)置系統(tǒng)的TIME_WAIT的數(shù)量了嚎,如果超過默認(rèn)值則會被立即清除
net.ipv4.tcp_max_tw_buckets = 20000
定義了系統(tǒng)中每一個端口最大的監(jiān)聽隊列的長度泪漂,這是個全局的參數(shù)
net.core.somaxconn = 65535
對于還未獲得對方確認(rèn)的連接請求,可保存在隊列中的最大數(shù)目
net.ipv4.tcp_max_syn_backlog = 262144
在每個網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時歪泳,允許送到隊列的數(shù)據(jù)包的最大數(shù)目
net.core.netdev_max_backlog = 30000
能夠更快地回收TIME-WAIT套接字萝勤。此選項會導(dǎo)致處于NAT網(wǎng)絡(luò)的客戶端超時,建議為0
net.ipv4.tcp_tw_recycle = 0
系統(tǒng)所有進(jìn)程一共可以打開的文件數(shù)量
fs.file-max = 6815744
防火墻跟蹤表的大小呐伞。注意:如果防火墻沒開則會提示error: "net.netfilter.nf_conntrack_max" is an unknown key敌卓,忽略即可
net.netfilter.nf_conntrack_max = 2621440

運行 sysctl -p即可生效。

2伶氢、修改打開文件限制

(1)ulimit -HSn 102400

這只是在當(dāng)前終端有效趟径,退出之后,open files 又變?yōu)槟J(rèn)值癣防。

(2)將ulimit -HSn 102400寫到/etc/profile中蜗巧,這樣每次登錄終端時,都會自動執(zhí)行/etc/profile蕾盯。

(3)令修改open files的數(shù)值永久生效幕屹,則必須修改配置文件:/etc/security/limits.conf. 在這個文件后加上:

  • soft nofile 1024000
  • hard nofile 1024000
    root soft nofile 1024000
    root hard nofile 1024000
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子望拖,更是在濱河造成了極大的恐慌迅腔,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靠娱,死亡現(xiàn)場離奇詭異,居然都是意外死亡掠兄,警方通過查閱死者的電腦和手機像云,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚂夕,“玉大人迅诬,你說我怎么就攤上這事⌒鲭梗” “怎么了侈贷?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長等脂。 經(jīng)常有香客問我俏蛮,道長,這世上最難降的妖魔是什么上遥? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任搏屑,我火速辦了婚禮,結(jié)果婚禮上粉楚,老公的妹妹穿的比我還像新娘辣恋。我一直安慰自己,他們只是感情好模软,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布伟骨。 她就那樣靜靜地躺著,像睡著了一般燃异。 火紅的嫁衣襯著肌膚如雪携狭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天回俐,我揣著相機與錄音暑中,去河邊找鬼。 笑死鲫剿,一個胖子當(dāng)著我的面吹牛鳄逾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灵莲,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼雕凹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枚抵,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤线欲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后汽摹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體李丰,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年逼泣,在試婚紗的時候發(fā)現(xiàn)自己被綠了真友。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吆玖。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞭吃,死狀恐怖木缝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情氏仗,我是刑警寧澤吉捶,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站皆尔,受9級特大地震影響呐舔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慷蠕,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一滋早、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砌们,春花似錦杆麸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至影兽,卻和暖如春揭斧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背峻堰。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工讹开, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捐名。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓旦万,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镶蹋。 傳聞我的和親對象是個殘疾皇子成艘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容