當前位置:編程學習大全網 - 網站源碼 - epoll 丟連接或丟包問題

epoll 丟連接或丟包問題

問: 服務端用epoll 模型 , 客戶端連接服務端發送大量udp 數據包, 經過壹段時間後, 再次發送udp 數據包時,服務端收不到包,(或者說大量tcp連接服務端,服務端會丟失連接),為何?

答:1. 在服務端,用 ss -lu 查看 對應進程的recv-Q 是否占滿

當 Recv-Q 可以理解為 對應進程socket 的接收緩存隊列,系統維護,如果占滿,系統會丟棄數據包。 可dmesg 查看相應系統日誌。

epoll 模型有兩種觸發方式:

壹種叫好比拉尿,拉尿的時候都是壹次拉完,只要膀胱中還有尿,就壹直拉。這就是epoll 模型中的EPOLLLT (水平觸發)模式,只要緩沖區裏有數據,就壹直觸發,(應用)趕快處理。

壹種叫拉屎, 妳完全可以拉到壹半,然後提褲子走人,去接個電話。過壹會兒,可能又有了拉屎的欲望, 再去拉屎。這就是epoll 模型中的EPOLLET(邊沿觸發)模式,當兩個網絡包同時到達時,只觸發壹次。

  • 上一篇:word如何將模板復制到空白頁?
  • 下一篇:誰知道神龍鬥士官方網站及魔神的圖片
  • copyright 2024編程學習大全網