Protocol Local Address Foreign Address State
TCP 10.228.148.120:1029 193.85.216.234:443 ESTABLISHED
TCP 10.228.148.120:1088 64.233.188.188:5228 ESTABLISHED
TCP 10.228.148.120:1118 31.13.87.1:443 ESTABLISHED
TCP 10.228.148.120:1394 74.125.203.138:443 ESTABLISHED
這樣子會出現什麼狀況, 你要連線的目的地連接埠, 你只有 64K 個連線, 為什麼 64K 呢? 因為你可能是下面這個狀況。
TCP 192.168.255.254:[0-65535] 192.168.255.200:80
為什麼這個狀況會發生呢? 如果你的 web server 前面有防火牆或者 HA server, 有做過 NAT 轉換的話, 所有從外部對你的 web server 產生的 http 需求, IP 都會轉換成防火牆或者 HA server 對 web server 連接用的 IP, 所以當有一天你的網站突然很紅, 很多人連線, 或者你改了什麼東西, 大量的動態網頁造成大量的連線持續使用中, 或者你的 web service 被 DDoS 都有機會發生這樣的狀況。
可能的解決方案如下, 你的前端如果是防火牆的話, 加上你的 public IP 夠用的話, 請把防火牆改成 Transparent 的工作模式, 然後把 web server 的 IP 改成 public IP, 避免掉 NAT 造成的問題。但是這樣沒有解決掉防火牆支援連線數容量限制的問題, 所以防火牆也有可能要換。連線大概會變成像下面這樣。
TCP 0.0.0.0:[0-65535] 195.168.255.200:80
TCP 192.168.255.254:[0-65535] 192.168.255.200:80
TCP 192.168.255.254:[0-65535] 192.168.255.200:81
TCP 192.168.255.254:[0-65535] 192.168.255.200:80
TCP 192.168.255.254:[0-65535] 192.168.255.201:80
還有很多細節的問題, 從使用者的位置到後端架構來看, 可能從網頁的靜態化的最大化, 到動態資料傳輸的最小化, 還有計算每一個連線平均的連線時間, 最長的閒置時間, 一個 IP 最多的連線數, 目前的對外頻寬同時間應該要服務多少個連線等等, 這些都要做過實驗才能知道。
沒有留言:
張貼留言