前提:
客戶的一個網站設於一台 Dell Linux Rackmount Server中。所用的是 Drupal 6/Apache2/Mysql/PHP5。近日發現由街外連到網站很慢,有些圖片差不多要花 8 秒才顯示。正常時只有數微秒。但在內聯網很正常。
內聯網使用100MB,出外用商用 PCCW Fiber boardband (連Router)
檢查:
- Ping server from external network: avg ~ 10ms, 8% packet loss @packet size =1500
- Ping server from external network: avg ~ 10ms, 17% packet loss @packet size =1400
- Ping server from internal network: avg ~ 2ms, 0% packet loss @packet size =1500
- Ping server from internal network: avg ~ 2ms, 0% packet loss @packet size =1400
- Test From external connection:
- 使用 Chrome Developer tools 中的 Timeline,比對 request/response。發現很多圖片花很長時間才LOAD到。
- 若 URL 為單一張圖片,速度正常。
- 弄一個 Static HTML,內有一張圖片,速度正常。
- 弄一個 Static HTML,內有多張圖片,速度有時正常,有時慢。
- Disable/Clear Browser Cache,不停 Reload: 單一張圖片都有LOADING慢的情況,但相對多張圖片,慢的情況比較少。
- 使用 SFTP upload/download 速度看似正常 (~2MB/s
- 放一個 40MB file,並使用HTTP下載,速度正常 (~2MB/s)
- 運行 iptraf 於另一台機器上 (高流量的Server),打開 Force Promiscuous Mode,這樣可估計同一個 network 的流量。結果沒發現有大量 Traffic。
注意,打開 Promiscuous Mode即是 Capture 所有流經,但不一定傳送入網卡上的 Packet。
第一階段假設:
- Server 那邊看似沒有問題 -- 跟 PHP APP (Drupal),或 APACHE
- 內聯網正常,沒有 Packet Loss
- Intenet 那邊的 Bandwidth 沒有被佔用
- 問題似是跟 Intenet 那邊有關
再使用 Network Sniffer 看多一點:
因為使用遠端做 Diagnostic,所以
- 於本地的 Linux workstation建立 File FIFO, 如:
# makefifo ~/capture - 於目標 WEB SERVER 端執行 TCPDUMP -- 透過SSH Pipe,送到本地的 Linux workstation, 如:
# ssh {user}@targetweb sudo tcpdump -s 0 -U -n -w - -i eth0 tcp not dst port 22 and not src port 22 > ~/capture - 注意,因須要使用 sudo (除非以root連線),請修改sudo user 設定
- 再於本地的 Linux workstation 中執行 Wireshark,使用 Capture Options,於Interface 中輸入剛才FIFO的目錄位置,打開 promiscuous mode
- 以 Internal network 訪問網頁
- 監察有沒有 BAD Packet --> 沒有
- 再以 Internet network 訪問網頁 --> 發現了 TCP Dup Ack, RST 等
暫時可確認若從 Internet 端訪問網頁會出現 packet lost,應該跟ISP或 WAN端的router 有關。
測試先到這裡。
參考:
http://blog.notreally.org/2007/01/24/how-to-monitor-packets-from-a-remote-interface/
http://www.question-defense.com/2008/12/07/exclude-one-port-from-a-tcpdump-output
http://iptraf.seul.org/
http://www.wireshark.org/
測試先到這裡。
參考:
http://blog.notreally.org/2007/01/24/how-to-monitor-packets-from-a-remote-interface/
http://www.question-defense.com/2008/12/07/exclude-one-port-from-a-tcpdump-output
http://iptraf.seul.org/
http://www.wireshark.org/
沒有留言:
發佈留言