Nginx為啥使用ET模式Epoll?

時間 2021-05-29 23:04:16

1樓:haolifeng

epoll的ET是邊緣觸發,也就是說核心中協議棧中的空間中的資料從無到有的時候觸發一次可讀;協議棧從滿到空的時候觸發一次可寫。這就是說再使用epoll_wait的時候可以一次將記憶體協議棧中的資料讀出來,或者一次就將記憶體協議站在資料一次塞滿。比水平觸發型別觸發的次數少,一次處理的資料多。

效能好一些,對程式設計能力要求高一些。

2樓:dong

使用ET模式,可以便捷的處理EPOLLOUT事件,省去開啟與關閉EPOLLOUT的epoll_ctl(EPOLL_CTL_MOD)呼叫。從而有可能讓你的效能得到一定的提公升。

例如你需要寫出1M的資料,寫出到socket 256k時,返回了EAGAIN,ET模式下,當再次返回EPOLLOUT時,繼續寫出待寫出的資料,當沒有資料需要寫出時,不處理直接略過即可。而LT模式則需要先開啟EPOLLOUT,當沒有資料需要寫出時,再關閉EPOLLOUT(否則會一直會返回EPOLLOUT事件)

當nginx處理大併發大流量的請求時,LT模式會出現較多的epoll_ctl呼叫用於開關EPOLLOUT,因此ET模式就更合適了

關於某些場景下ET模式比LT模式效率更好,我有篇文章進行了詳細的解釋與測試,參看

epoll LT/ET 深入剖析

3樓:hihus

看連線的空閒程度,連線的空閒程度很高就用ET,所以按照場景,http的客戶端idel情況很高,用ET,如果是rpg的遊戲伺服器,用LT,ET差不多

QEME 使用者模式怎麼使用

Way Billy 通過Binary Translation,qemu 的叫TCG編譯的時候要選目標架構,你要執行x86的,就選x86 softmmuconfigure檔案裡有一堆,1006 i386 softmmu 1007 x86 64 softmmu 1008 alpha softmmu 10...

mplsvpn為啥要使用MP bgp

長頸鹿 因為BGP撤銷報文 withdraw 的時候是不帶community屬性的,所以如果要發撤銷報文的時候,只用BGP就無法知道發給哪個VRF了,用VPNV4的話因為前面帶了RD就可以區分發給哪個VRF了 非洲土著 我覺得你理解錯了,rd是將本地的每一條路由變成乙個唯一的,因為乙個pe鏈結著多個...

使用vim,如何自如地在命令模式和插入模式間轉換?

說下我自己的一些使用心得 1.map jj 到 Esc。Esc 鍵確實有點離得太遠,還容易按錯。但是把 Caps Lock 鍵 remap 到 Esc 鍵又顯得太激進,太過麻煩而且換台機器就囧了。jj 很方便快速按到,而且與其它單詞幾乎沒衝突。2.nmap 到 鑑於經常要輸入命令,每次還要去按 Sh...