linux保留端口避免被隨機(jī)分配占用方式(ip_local_reserved_ports)
現(xiàn)象
nginx所在服務(wù)器上的應(yīng)用偶現(xiàn)規(guī)劃的端口被探測(cè)到激活,從而導(dǎo)致被ng分配請(qǐng)求,但卻給不了正常的數(shù)據(jù);
同時(shí):
- 通過(guò)命令
netstat -anlp|wc -l顯示有大量tcp連接,對(duì)open files值也有參考意義 - 通過(guò)命令
netstat -anlp|awk '{print $4}'|sort|uniq -c|wc -l顯示有大量端口占用,統(tǒng)計(jì)第四列表示本地使用的端口(會(huì)重復(fù))
解決1:范圍增大和保留端口不被占用
TCP/IP協(xié)議棧從ip_local_port_range中隨機(jī)選取源端口時(shí),會(huì)排除ip_local_reserved_ports中定義的端口,因此不會(huì)出現(xiàn)端口被占用導(dǎo)致服務(wù)無(wú)法啟動(dòng)的問(wèn)題。
使用net.ipv4.ip_local_port_range參數(shù),規(guī)劃出一段端口段預(yù)留作為服務(wù)的端口,這種方法是可以解決當(dāng)前問(wèn)題,但是會(huì)有個(gè)問(wèn)題,端口使用量減少了,當(dāng)服務(wù)器需要消耗大量的端口號(hào)的話,比如反代服務(wù)器,就存在瓶頸了。
判斷是否規(guī)劃的端口在隨機(jī)分配端口(也可增加范圍)
sysctl -a |grep net.ipv4.ip_local_port_range
默認(rèn):
net.ipv4.ip_local_port_range = 32768 60999
當(dāng)長(zhǎng)連接比較多時(shí),可適當(dāng)增加此參數(shù)
如果端口在隨機(jī)分配端口之內(nèi)
則寫(xiě)如下配置,以保留不會(huì)被分配。
vim /etc/sysctl.conf
#支持“-”寫(xiě)端口段:33000-33100 net.ipv4.ip_local_reserved_ports = 35080
保存后,執(zhí)行命令生效:sysctl -p
解決2:把ng服務(wù)與應(yīng)用服務(wù)分開(kāi)部署
當(dāng)ng與需要反代的服務(wù)放一起時(shí),會(huì)隨機(jī)分配端口與反代服務(wù)映射,而因?yàn)槎荚谕慌_(tái)服務(wù)器,并發(fā)高時(shí),此端口會(huì)被占用;
最大可用端口數(shù)
IP的端口是雙字節(jié),也就是256256-1, 256256對(duì)計(jì)算機(jī)來(lái)說(shuō)就是0,因?yàn)榇俗畲蟮亩丝谔?hào)是65535而不是65536,當(dāng)然端口數(shù)值是0-65535,數(shù)量是65536個(gè),但0一般不用,故而我們通常都說(shuō)65535,而且端口號(hào)最大也是65535,所以我們都說(shuō)端口是65535
如何突破端口限制
每個(gè)機(jī)器還可以裝多個(gè)網(wǎng)卡,在極端情況下,是可能通過(guò)增加網(wǎng)卡IP的形式來(lái)突破。
根據(jù)tcp連接四要素:
【源IP、源Port、目標(biāo)IP、目標(biāo)Port】,機(jī)器自身系統(tǒng)無(wú)關(guān),在交互時(shí)以網(wǎng)卡標(biāo)識(shí)。
實(shí)際幾乎大多情況
端口不是說(shuō)占用了就一直是你的了,你不用了還可以釋放,釋放后別的程序還能接著使用,所以,動(dòng)態(tài)利用之下,很難把端口占完的。
其二、要分清端口和連接。一個(gè)端口可以有若干個(gè)連接,如nginx,普通linux上,一個(gè)80端口就能并發(fā)10萬(wàn)+的連接,極限情況下,可以近百萬(wàn)。所以,由于端口復(fù)用,其實(shí)并不會(huì)用到那么多端口。
所以,65536個(gè)端口用完的話基本上不會(huì)出現(xiàn)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux之CentOS7下如何關(guān)閉SELINUX
這篇文章主要介紹了Linux之CentOS7下如何關(guān)閉SELINUX問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Linux虛擬機(jī)復(fù)制文件到Windows主機(jī)的解決辦法
這篇文章主要介紹了Linux虛擬機(jī)復(fù)制文件到Windows主機(jī)的解決辦法,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
Linux VPS備份教程 數(shù)據(jù)庫(kù)/網(wǎng)站文件自動(dòng)定時(shí)備份
這篇文章老左分享目前大家比較常用的自動(dòng)定時(shí)備份方案,數(shù)據(jù)庫(kù)發(fā)送到我們的郵箱、文件發(fā)送同步到我們另外空間FTP中2012-09-09
Ubuntu服務(wù)器下搭建php運(yùn)行環(huán)境的方法
這篇文章主要介紹了Ubuntu服務(wù)器下搭建php運(yùn)行環(huán)境的方法,簡(jiǎn)單分析了Ubuntu操作系統(tǒng)環(huán)境下搭建Apache、php及mysql模塊相關(guān)步驟、命令與操作技巧,需要的朋友可以參考下2018-04-04
linux查看網(wǎng)絡(luò)設(shè)備類型的實(shí)現(xiàn)方式
這篇文章主要介紹了linux查看網(wǎng)絡(luò)設(shè)備類型的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
Linux系統(tǒng)實(shí)現(xiàn)日志的無(wú)損遷移的完整方案介紹
這篇文章主要為大家詳細(xì)介紹了Linux系統(tǒng)實(shí)現(xiàn)日志的無(wú)損遷移的完整方案,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下2025-09-09
Linux實(shí)現(xiàn)雙網(wǎng)卡綁定的代碼詳解
linux 主機(jī)安裝雙網(wǎng)卡,共享一個(gè)IP地址,對(duì)外提供訪問(wèn),實(shí)際同樣連接兩條物理線路到交換機(jī)實(shí)現(xiàn)平時(shí)雙網(wǎng)卡同時(shí)工作,分流網(wǎng)絡(luò)壓力,同時(shí)提供冗余備份,監(jiān)控,防止物理線路的單點(diǎn)故障,本文介紹了Linux實(shí)現(xiàn)雙網(wǎng)卡綁定的代碼示例,需要的朋友可以參考下2024-07-07
Linux下PHP網(wǎng)站服務(wù)器安全配置加固防護(hù)方法【推薦】
本文詳細(xì)總結(jié)了PHP網(wǎng)站在Linux服務(wù)器上面的安全配置,包含PHP安全、mysql數(shù)據(jù)庫(kù)安全、web服務(wù)器安全、木馬查殺和防范等,很好很強(qiáng)大很安全。感興趣的朋友跟隨腳本之家小編一起看看吧2018-08-08

