一、簡(jiǎn)介
nginx是一款非常受歡迎的軟件,具備高性能、模塊化可定制的良好特性。之前寫了一篇nginx的http模塊分析的文章,主要對(duì)http處理模塊進(jìn)行了分析講解,同時(shí)也涉及了nginx模塊化的內(nèi)容。至于nginx高性能的原因,希望能夠在在這篇文章中就自己對(duì)于這方面的理解給大家分享一下。
nginx的event處理模型包含兩個(gè)方面:高效的IO處理函數(shù),事件的異步處理(可選的線程池)。
二、IO復(fù)用函數(shù)
nginx中包含epoll、poll、select、devpoll、kqueue、iocp等不同的IO處理函數(shù)。下面就常見的epoll、poll、select來做簡(jiǎn)單的分析
select | poll | epoll | |
fd數(shù)量 | 用fd_set類型來存儲(chǔ)fd,每個(gè)fd占一位,fd_set在linux系統(tǒng)中默認(rèn)1024位,所以select最多支持1024個(gè)fd(可以通過修改FD_SETSIZE來增加) | 采用pollfd結(jié)構(gòu)體來存儲(chǔ)fd,因此支持的最大fd數(shù)目跟系統(tǒng)內(nèi)存有關(guān)(支持存儲(chǔ)多少個(gè)) | 采用epoll_event存儲(chǔ),因此也只與內(nèi)存有關(guān) |
通知方式 |
延伸閱讀
我想了解如何學(xué)習(xí) |