伺服器規約
1. 【建議】高並發伺服器建議調小 TCP 協定的 time _ wait 逾時時間。
說明:作業系統預設240 秒後,才會關閉處於time _ wait 狀態的連接,在高並發存取下,服務器端會因為處於time _ wait 的連接數太多,可能無法建立新的連接,所以需要在伺服器上調小此等待值。
正例:在linux 伺服器上請透過變更/ etc / sysctl . conf 檔案去修改該預設值( 秒) :
net . ipv 4. tcp _ fin _ timeout = 30
2. 【建議】調大伺服器所支援的最大檔案句柄數(File Descriptor ,簡寫為fd) 。
說明:主流作業系統的設計是將 TCP / UDP 連線採用與檔案一樣的方式去管理,即一個連線對應於一個 fd 。主流的 linux 伺服器預設所支援最大 fd 數量為 1024,當並發連線數很大時很容易因為 fd 不足而出現「 open too many files 」錯誤,導致新的連線無法建立。建議將 linux伺服器所支援的最大句柄數調高數倍 ( 與伺服器的記憶體數量相關 ) 。
3. 【推薦】給 JVM 設定- XX : HeapDumpOnOutOfMemoryError 參數,讓 JVM 碰到 OOM 場景時輸出dump 訊息。
說明: OOM 的發生是有機率的,甚至有規律地相隔數月才出現一例,出現時的現場資訊對查錯非常有價值。
4. 【參考】伺服器內部重定向使用forward;外部重定向位址使用URL 拼裝工具類別來生成,否則會帶來URL 維護不一致的問題和潛在的安全風險。