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