Nginx是一款輕量級的HTTP服務器,採用事件驅動的異步非阻塞處理方式框架,這讓其具有極好的IO性能,時常用於服務端的反向代理和負載均衡。
Nginx的優點
支持海量高併發:採用IO多路複用epoll。官方測試Nginx能夠支持5萬併發鏈接,實際生產環境中可以支撐2-4萬併發連接數。
內存消耗少:在主流的服務器中Nginx目前是內存消耗最小的了,比如我們用Nginx+PHP,在3萬併發鏈接下,開啓10個Nginx進程消耗150M內存。
免費使用可以商業化:Nginx爲開源軟件,採用的是2-clause BSD-like協議,可以免費使用,並且可以用於商業。
配置文件簡單:網絡和程序配置通俗易懂,即使非專業運維也能看懂。
一、IO多路複用epoll
IO多路複用:多個描述符的I/O操作都能在一個線程內併發交替地順序完成,這就叫I/O多路複用,這裏的“複用”指的是複用同一個線程。
IO多路複用的實現方式有:select、poll、epoll
select:
缺點:
1)能夠監視文件描述符的數量存在最大限制
2)線性描述效率低下
epoll:
1)每當FD就緒,採用系統的回調函數之間將FD放入,效率更高。
2)最大連接無限制
二、輕量級
三、CPU親和
是一種把CPU核心和Nginx工作進程綁定方式,把每個worker進程固定在一個cpu上執行,減少切換cpu的cache miss,獲得更好的性能。
四、sendfile