2011年8月9日

測試網絡節一些心得

因客戶要求,剛完成了一個網絡測試。所以寫下以下備忘。

前提:
客戶的一個網站設於一台 Dell Linux Rackmount Server中。所用的是 Drupal 6/Apache2/Mysql/PHP5。近日發現由街外連到網站很慢,有些圖片差不多要花 8 秒才顯示。正常時只有數微秒。但在內聯網很正常。
內聯網使用100MB,出外用商用 PCCW Fiber boardband (連Router)


檢查:

  1. Ping server from external network: avg ~ 10ms, 8% packet loss  @packet size =1500
  2. Ping server from external network: avg ~ 10ms, 17% packet loss  @packet size =1400
  3. Ping server from internal network: avg ~ 2ms, 0% packet loss  @packet size =1500
  4. Ping server from internal network: avg ~ 2ms, 0% packet loss  @packet size =1400
  5. Test From external connection:
  6. 使用 Chrome Developer tools 中的 Timeline,比對 request/response。發現很多圖片花很長時間才LOAD到。
  7. 若 URL 為單一張圖片,速度正常。
  8. 弄一個 Static HTML,內有一張圖片,速度正常。
  9. 弄一個 Static HTML,內有多張圖片,速度有時正常,有時慢。
  10. Disable/Clear Browser Cache,不停 Reload: 單一張圖片都有LOADING慢的情況,但相對多張圖片,慢的情況比較少。
  11. 使用 SFTP upload/download 速度看似正常 (~2MB/s
  12. 放一個 40MB file,並使用HTTP下載,速度正常 (~2MB/s)
  13. 運行 iptraf 於另一台機器上 (高流量的Server),打開 Force Promiscuous Mode,這樣可估計同一個 network 的流量。結果沒發現有大量 Traffic。
注意,打開 Promiscuous Mode即是 Capture 所有流經,但不一定傳送入網卡上的 Packet。

第一階段假設:
  1. Server 那邊看似沒有問題 -- 跟 PHP APP (Drupal),或 APACHE
  2. 內聯網正常,沒有 Packet Loss
  3. Intenet 那邊的 Bandwidth 沒有被佔用
  4. 問題似是跟 Intenet 那邊有關
再使用 Network Sniffer 看多一點:

因為使用遠端做 Diagnostic,所以
  1. 於本地的 Linux workstation建立 File FIFO, 如:
    # makefifo ~/capture
  2. 於目標 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
  3. 注意,因須要使用 sudo (除非以root連線),請修改sudo user 設定
  4. 再於本地的 Linux workstation 中執行 Wireshark,使用 Capture Options,於Interface 中輸入剛才FIFO的目錄位置,打開 promiscuous mode
  5. 以 Internal network 訪問網頁
  6. 監察有沒有 BAD Packet --> 沒有
  7. 再以 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/

沒有留言:

發佈留言