服務(wù)器規(guī)約
1. 【推薦】高并發(fā)服務(wù)器建議調(diào)小 TCP 協(xié)議的 time _ wait 超時(shí)時(shí)間。
說(shuō)明:操作系統(tǒng)默認(rèn) 240 秒后,才會(huì)關(guān)閉處于 time _ wait 狀態(tài)的連接,在高并發(fā)訪問(wèn)下,服務(wù)器端會(huì)因?yàn)樘幱?time _ wait 的連接數(shù)太多,可能無(wú)法建立新的連接,所以需要在服務(wù)器上調(diào)小此等待值。
正例:在 linux 服務(wù)器上請(qǐng)通過(guò)變更/ etc / sysctl . conf 文件去修改該缺省值 ( 秒 ) :
net . ipv 4. tcp _ fin _ timeout = 30
2. 【推薦】調(diào)大服務(wù)器所支持的最大文件句柄數(shù) (File Descriptor ,簡(jiǎn)寫(xiě)為 fd) 。
說(shuō)明:主流操作系統(tǒng)的設(shè)計(jì)是將 TCP / UDP 連接采用與文件一樣的方式去管理,即一個(gè)連接對(duì)應(yīng)于一個(gè) fd 。主流的 linux 服務(wù)器默認(rèn)所支持最大 fd 數(shù)量為 1024,當(dāng)并發(fā)連接數(shù)很大時(shí)很容易因?yàn)?fd 不足而出現(xiàn)“ open too many files ”錯(cuò)誤,導(dǎo)致新的連接無(wú)法建立。 建議將 linux服務(wù)器所支持的最大句柄數(shù)調(diào)高數(shù)倍 ( 與服務(wù)器的內(nèi)存數(shù)量相關(guān) ) 。
3. 【推薦】給 JVM 設(shè)置- XX :+ HeapDumpOnOutOfMemoryError 參數(shù),讓 JVM 碰到 OOM 場(chǎng)景時(shí)輸出dump 信息。
說(shuō)明: OOM 的發(fā)生是有概率的,甚至有規(guī)律地相隔數(shù)月才出現(xiàn)一例,出現(xiàn)時(shí)的現(xiàn)場(chǎng)信息對(duì)查錯(cuò)非常有價(jià)值。
4. 【參考】服務(wù)器內(nèi)部重定向使用 forward; 外部重定向地址使用 URL 拼裝工具類(lèi)來(lái)生成,否則會(huì)帶來(lái) URL 維護(hù)不一致的問(wèn)題和潛在的安全風(fēng)險(xiǎn)。