服务 TCP 断线错误分析
分析背景
在數據驅動架構升級這一主題下, 更好地統計異常斷線率
統計結果
準備
服務是學生老師一對一連線, 多數情況下為學生的網絡條件較差, 因此此處假定老師的網絡為正常.
老師設備為 IPAD, 系統為 IOS 9.3.5, 網絡 wifi: iyunxiao
學生 Android 設備為 一加6, 系統為 Android 9, IOS 設備為 IPAD mini, 系統為 IOS 11.3.1, Windows 系統為 Windows 10, 網絡 wifi: AI-Yunxiao
IOS 程序模擬的異常為下標越界, 導致程序退出. (這是大多數的出現的異常情況)
Android 程序模擬的異常為程序跳入主界面, 報錯顯示程序報錯. (Android 各設備顯示均不相同, 無法很好的預測異常出現時的到底發生什么情況)?
Windows 程序模擬的異常, 是程序卡住. 也不報錯什么也不顯示, 只是無法點擊關閉按鈕關閉頁面.
過程(老師端程序均正常運行)
測試結果
IOS端: 服務端異常,?i/o timeout, session: 7211938
Android: 服務端異常,?i/o timeout, session:?7211968
Windows:?服務端異常,?i/o timeout, session:?7211986
IOS端:?
? ? 在老師設備上顯示完指令的時候, 殺掉客戶端, 服務端異常, EOF, session: 7211947 7211948
? ? 在老師設備上還有未顯示完指令的時候, 殺掉客戶端, 服務端異常, connection reset by peer, session: 7211946 7211949
Android端:
? ? 無論有無顯示完的指令, 都是服務端異常服務端異常, EOF, session:?7211972
Windows 端:
? ? 服務端異常,?connection reset by peer, session:?7211990
IOS端:?無論有無顯示完的指令都是服務端異常,?i/o timeout, session: 7211943
Android端:?
? ??在老師設備上顯示完指令的時候, 殺掉客戶端, 服務端異常, EOF, session:?7211975
? ??在老師設備上還有未顯示完指令的時候, 殺掉客戶端, 有時候, 服務端異常, EOF, session:?7211974, 有時候, 服務端異常,?connection reset by peer, session:?7211976?7211977
Windows 端:
? ? 服務端異常,?connection reset by peer, session:?7211991
IOS端:?服務端異常,?i/o timeout, session: 7211945
Android: 無論有無顯示完的指令, 都是服務端異常,?i/o timeout, session:?7211980?7211981
Windows 端:?服務端異常,?i/o timeout, session:?7211992
IOS端: 無論有無顯示完的指令, 都是服務端異常, connection reset by peer, session: 7211954
Android端:無論有無顯示完的指令, 都是服務端異常服務端異常, EOF, session:?7211982?7211983
測試結論
只要三端先斷開 WiFi, 無論殺掉客戶端與否, 服務端都會出現?i/o timeout 的 TCP 錯誤.
Windows 在其他的異常情況下, 收到的都是Connection reset by peer的異常, 與參考文檔中的結果一致, 參考文檔中的客戶端也是使用 Windows 平臺.?
IOS 在客戶端被殺掉的情況下, 如果 WiFi 被斷, 會收到?i/o timeout 的 TCP 錯誤, 跟過程1、過程4相似. 但是 WiFi 如果不被斷, 當殺掉程序的那一刻, 如果還有 TCP 數據傳輸, 則是 Connection reset by peer, 否則是 EOF
Android 的情況比較復雜, 在客戶端被殺掉的情況下, 如果 WiFi 被斷, 其會出現 EOF 以及Connection reset by peer. 如果沒被斷, 則只會出現 EOF 的情況.?
結果分析
從三端出現 TCP error 類型來推測異常發生的情景:?
Android:
? ? EOF 的出現表明客戶端的程序奔潰, 無響應, 還有可能是程序被用戶自己殺掉, 但是這種情況正常情況下, 用戶不會無緣無故殺掉正在上課的程序.
? ??i/o timeout 的出現表明客戶端那塊的網絡出現異常, 路由器無網絡, 進入長隧道等, 即用戶網絡消失了.
? ??connection reset by peer 的出現也是出現在網絡出現問題的時候.?
IOS:
? ? EOF: 發生在程序退出, 被用戶殺掉
? ??i/o timeout 的出現表明客戶端那塊的網絡出現異常, 路由器無網絡, 進入長隧道等, 即用戶網絡消失了.
? ??connection reset by peer 出現在程序奔潰的
Windows:
? ??i/o timeout 的情況同IOS、Android.
? ??connection reset by peer 的情況發生在程序被殺等除網絡發生的情況.
? ? EOF 的異常未發生.
Broken pipe 在測試中未發生. 在正式環境上有出現, 但是也相對較少. 其出現常常伴隨有connection reset by peer的異常
參考文檔
TCP異常關閉之總結
TCP異常關閉研究分析
深入研究分析TCP的異常關閉
轉載于:https://www.cnblogs.com/Zereker/p/11396671.html
總結
以上是生活随笔為你收集整理的服务 TCP 断线错误分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用expvar进行监控
- 下一篇: vue3.0以上关于打包后出现空白页和路