下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本文格式為Word版,下載可任意編輯 Linux服務(wù)器網(wǎng)絡(luò)開發(fā)模型x Linux 服務(wù)器網(wǎng)絡(luò)開發(fā)模型 為什么 Nginx 的性能要比 Apache 高得多? 這主要是由于 Nginx 使用了最新的 epoll(Linux 2.6 內(nèi)核)和 kqueue(FreeBSD)網(wǎng)絡(luò) I/O 模型,而 Apache 那么使用的是傳統(tǒng)的 select 模型。曾在一篇博客上看到有這么個(gè)實(shí)例: 假設(shè)你在大學(xué)中讀書,要等待一個(gè)摯友來(lái)訪,而這個(gè)摯友只知道你在 A 號(hào)樓,但是不知道你概括住在哪里,于是你們約好了在 A 號(hào)樓門口見面.假設(shè)你使用的阻塞 IO 模型來(lái)處理這個(gè)問題,那么你就只能一向守候在 A 號(hào)樓門口等待
2、摯友的到來(lái),在這段時(shí)間里你不能做別的事情,不難知道,這種方式的效率是低下的.現(xiàn)在時(shí)代變化了,開頭使用多路復(fù)用 IO 模型來(lái)處理這個(gè)問題.你報(bào)告你的摯友來(lái)了 A 號(hào)樓找樓管大媽,讓她報(bào)告你該怎么走.這里的樓管大媽扮演的就是多路復(fù)用 IO 的角色。 解釋 select 和 epoll 模型的工作方式: select 版大媽做的是如下的事情:譬如同學(xué)甲的摯友來(lái)了,select 版大媽對(duì)比笨,她帶著摯友挨個(gè)房間舉行查詢誰(shuí)是同學(xué)甲,你等的摯友來(lái)了。假設(shè)每到來(lái)一個(gè)摯友樓管大媽都要全樓的查詢同學(xué),那么處理的效率必然就低下了,過不久樓底就有不少的人了。 epoll 版大媽就對(duì)比先進(jìn)了,她記錄了同學(xué)甲的信息,譬
3、如說(shuō)他的房間號(hào),那么等同學(xué)甲的摯友到來(lái)時(shí),只需要報(bào)告該摯友同學(xué)甲在哪個(gè)房間即可,不用自己親自帶著人滿大樓的找人了。epoll 大媽可以不用吹灰之力就可以定位到同學(xué)甲。一看就很明白 epoll 和 select 模型的識(shí)別了吧。 在 Linux 內(nèi)核中,select 所用到的 FD_SET 是有限的,即內(nèi)核中有個(gè)參數(shù)_FD_SETSIZE 定義了每個(gè) FD_SET 的句柄個(gè)數(shù),在內(nèi)核源碼中 /usr/include/linux/posix_types.h 中 #undef _FD_SETSIZE #define _FD_SETSIZE 1024 假設(shè)想要同時(shí)檢測(cè) 1025 個(gè)句柄的可讀狀態(tài)或 可
4、寫狀態(tài) ,select 是不能實(shí)現(xiàn)的。在內(nèi)核中實(shí)現(xiàn) select 是使用輪詢方法,即每次檢測(cè)都會(huì)遍歷全體 FD_SET 中的句柄,鮮明,select 函數(shù)的執(zhí)行時(shí)間與 FD 檢測(cè)的句柄數(shù)越多就會(huì)越費(fèi)時(shí)。 epoll 是多路復(fù)用 是多路復(fù)用 IO(I/O Multiplexing) 中的一種方式,僅用于 linux2.6 以上內(nèi)核。而 epoll 模型它所支持的 FD 上限是最大可以開啟文件的數(shù)目,這個(gè)數(shù)字一般遠(yuǎn)大于 2048,舉個(gè)例子,在 1GB 內(nèi)存的機(jī)器上大約是 10 萬(wàn)左右,概括請(qǐng)查看:cat /proc/sys/fs/file-max ,這個(gè)數(shù)目和系統(tǒng)內(nèi)存關(guān)系很大。 傳統(tǒng)的 selec
5、t/poll 另一個(gè)致命弱點(diǎn)就是當(dāng)你擁有一個(gè)很大的 socket 集合,不過由于網(wǎng)絡(luò)延時(shí),任一時(shí)間只有片面的 socket 是活躍的,但是 select/poll 每次調(diào)用都會(huì)線性掃描全部的集合,導(dǎo)致效率呈現(xiàn)線性下降。但是 epoll 不存在這個(gè)問題,它只會(huì)對(duì)活躍的 socket 舉行操作這是由于在內(nèi)核實(shí)現(xiàn)中 epoll 是根據(jù)每個(gè) fd 上面的 callback 函數(shù)實(shí)現(xiàn)的。那么,只有活躍的 socket 才會(huì)主動(dòng)的去調(diào)用 callback 函數(shù),其他 idle 狀態(tài) socket 那么不會(huì),在這點(diǎn)上,epoll 實(shí)現(xiàn)了一個(gè)偽AIO,由于這時(shí)候推動(dòng)力在 os 內(nèi)核。在一些 benchmark
6、 中,假設(shè)全體的 socket根本上都是活躍的譬如一個(gè)高速 LAN 環(huán)境,epoll 并不比 select/poll 有什么效率,相反,假設(shè)過多使用 epoll_ctl,效率相比還有稍微的下降。但是一旦使用 idle connections 模擬 WAN 環(huán)境,epoll 的效率就遠(yuǎn)在 select/poll 之上了。 epoll 有兩種工作模式:Edge Triggered (ET)、 、Level Triggered (LT) LT(level triggered)是缺省的工作方式,并且同時(shí)支持 block 和 no-block socket.在這種做法中,內(nèi)核報(bào)告你一個(gè)文件描述符是否就緒了,然后可以對(duì)這個(gè)就緒的 fd舉行 IO 操作。假設(shè)你不作任何操作,內(nèi)核還是會(huì)持續(xù)通知你的,所以,這種模式編程出錯(cuò)誤可能性要小一點(diǎn)。傳統(tǒng)的 select/poll 都是這種模型的代表。 ET (edge-triggered)是高速工作方式,只支持 no-block socket。在這種模式下,當(dāng)描述符從未就緒變?yōu)榫途w時(shí),內(nèi)核通過 epoll 報(bào)告你。然后它會(huì)假設(shè)你知道文件描述符已經(jīng)就緒,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新材料研發(fā)與產(chǎn)業(yè)化推廣合同3篇
- 2025年度智能車庫(kù)租賃定金合同4篇
- 2024濕地公園生態(tài)教育展示中心建設(shè)合同3篇
- 2024投標(biāo)聯(lián)合體協(xié)議書模板:新型城鎮(zhèn)化項(xiàng)目合作3篇
- 2025個(gè)人股份代持協(xié)議范本與合同履行評(píng)估報(bào)告4篇
- 2025年度金融產(chǎn)品個(gè)人居間推廣合同4篇
- 2025年度個(gè)人股份代持協(xié)議書(藝術(shù)品投資合作)4篇
- 2025年浙江湖州供銷集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年山東玻纖集團(tuán)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年廣西防城港市港發(fā)控股集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2024年工程咨詢服務(wù)承諾書
- 青桔單車保險(xiǎn)合同條例
- 車輛使用不過戶免責(zé)協(xié)議書范文范本
- 《獅子王》電影賞析
- 2023-2024學(xué)年天津市部分區(qū)九年級(jí)(上)期末物理試卷
- DB13-T 5673-2023 公路自愈合瀝青混合料薄層超薄層罩面施工技術(shù)規(guī)范
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 哈爾濱研學(xué)旅行課程設(shè)計(jì)
- 2024 smart汽車品牌用戶社區(qū)運(yùn)營(yíng)全案
- 中醫(yī)護(hù)理人文
- 2024-2030年中國(guó)路亞用品市場(chǎng)銷售模式與競(jìng)爭(zhēng)前景分析報(bào)告
評(píng)論
0/150
提交評(píng)論