原因:因為阿里云服務器專有網(wǎng)絡,web設置完畢,在服務器中l(wèi)ocalhost能夠訪問,并且關閉防火墻,但是使用公網(wǎng)ip無法訪問。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的江北網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
解決方法:找到本實例安全組,配置規(guī)則,按照要求填入21(其中21為默認,如果更改過填寫更改過的端口)并增加端口20000/20500,配置完成后,能使用公網(wǎng)ip加端口訪問。
這是因為你可能沒有在阿里云上備案,像80,8080,443這些特殊端口,需要備案的,否則默認阿里云不會開通這些端口的。
阿里云服務器偶爾連接不上的問題出現(xiàn)在我做了一些TCP優(yōu)化之后,出現(xiàn)了公司內(nèi)網(wǎng)偶爾會出現(xiàn)連接不上服務器的問題,但是切換其他的網(wǎng)絡就可以正常連接。
1,登陸服務器查看資源使用top,vmstat等命令查看了一番發(fā)現(xiàn)服務器各項指標都沒有異常。于是將問題轉向了網(wǎng)絡層。
2,本地使用ping服務器外網(wǎng)ip正常返回,無丟包,延遲也正常。
3,登錄服務器查看tcp相關數(shù)據(jù)。
發(fā)現(xiàn)在卡頓時有大量tcp syn包被丟棄,數(shù)值一直在增長。
在查閱資料并結合實際情況后,發(fā)現(xiàn)該服務器同時啟用了 tcp_timestamps和tcp_tw_recycle參數(shù)。
后想起,之前同事為改善time_wait連接數(shù)過多問題曾改過該內(nèi)核參數(shù)。
解決辦法是,關閉tcp_tw_recycle:
再觀察,發(fā)現(xiàn)服務已正常,偶爾連接不上的現(xiàn)象消失。
我們先來man一下這兩個參數(shù)(man tcp):
cp_timestamp 是 RFC1323 定義的優(yōu)化選項,主要用于 TCP 連接中 RTT(Round Trip Time) 的計算,開啟 tcp_timestamp 有利于系統(tǒng)計算更加準確的 RTT,也就有利于 TCP 性能的提升。(默認開啟)
關于tcp_timestamps詳情請見:
開啟tcp_tw_recycle會啟用tcp time_wait的快速回收,這個參數(shù)不建議在NAT環(huán)境中啟用,它會引起相關問題。
tcp_tw_recycle是依賴tcp_timestamps參數(shù)的,在一般網(wǎng)絡環(huán)境中,可能不會有問題,但是在NAT環(huán)境中,問題就來了。比如我遇到的這個情況,辦公室的外網(wǎng)地址只有一個,所有人訪問后臺都會通過路由器做SNAT將內(nèi)網(wǎng)地址映射為公網(wǎng)IP,由于服務端和客戶端都啟用了tcp_timestamps,因此TCP頭部中增加時間戳信息,而在服務器看來,同一客戶端的時間戳必然是線性增長的,但是,由于我的客戶端網(wǎng)絡環(huán)境是NAT,因此每臺主機的時間戳都是有差異的,在啟用tcp_tw_recycle后,一旦有客戶端斷開連接,服務器可能就會丟棄那些時間戳較小的客戶端的SYN包,這也就導致了網(wǎng)站訪問極不穩(wěn)定。
主機A SIP:P1 (時間戳T0) --- Server 主機A斷開后
主機B SIP:P1 (時間戳T2) T2 T0 --- Server 丟棄
經(jīng)過此次故障,告誡我們在處理線上問題時,不能盲目修改參數(shù),一定要經(jīng)過測試,確認無誤后,再應用于生產(chǎn)環(huán)境。同時,也要加深對相關內(nèi)核參數(shù)的認識和理解。
本文解決靈感來自于