在 Windows 上模擬封包遺失
封包遺失就是使用者口中的「它就是卡住了」。你設定一個百分比,工具就會丟棄相應比例的封包,而你的應用必須自己應對。
在視窗中
- 填寫Process,讓受影響的只是你的應用,而不是整台電腦。
- 把Loss設為 0 到 100 之間的百分比。建議從 5 開始。
- 點選START,然後使用你的應用。
視窗頂部的狀態列會概括當前正在執行的內容,Statistics分頁會統計被丟棄的封包。
從命令列執行
同一個可執行檔案無需視窗也能執行。對一個瀏覽器施加 5% 的封包遺失,持續兩分鐘,之後一切自動恢復正常:
BeanNetworkTester.exe --loss 5 --target chrome.exe --duration 120
加上 --simulate 可以演練這條命令,而不觸碰真實流量。
該選多大的百分比
| 封包遺失率 | 實際感覺 |
|---|---|
| 1% | 一條良好的連線遇到了糟糕的一分鐘。大多數應用都能掩蓋它。 |
| 5% | 弱 Wi-Fi。頁面載入變慢,影片畫質下降。 |
| 20% | 擁擠的咖啡館熱點或火車隧道。開始出現逾時。 |
| 60% 及以上 | 幾乎無法使用。適合找出那條從沒人測試過的錯誤提示。 |
現成的設定檔會替你設定這一項。「Weak WiFi」、「Cafe (crowded WiFi)」和「3G network」除了延遲和限速之外,都帶有封包遺失數值。
兩件讓人意外的事
在 TCP 上你可能什麼都看不到。TCP 會重傳丟失的資料,所以透過 HTTPS 下載只會變慢,而不會失敗。如果想把封包遺失看作封包遺失,請測試基於 UDP 的東西:語音通話、遊戲、影片串流,或者 DNS。
封包遺失是隨機的,所以兩次執行會不同。設定一個隨機種子,同一次執行就會精確重複,這正是把「出過一次問題」變成別人也能復現的 bug 報告的辦法:
BeanNetworkTester.exe --loss 20 --target myapp.exe --seed 42 --duration 60
接下來
單獨的封包遺失很少見。真實的糟糕連線會封包遺失,並且增加延遲,並且速度不足,設定檔重現的就是這種組合。