Nginx和Apache比较

为什么Nginx总体性能比Apache要高:

Nginx使用的是最新的epoll(linux内核2.6)和kqueue(freebsd)网络IO模型,而Apache使用的是传统的select模型。目前Linux下能够承受高并发的软件Squid,Memcache都是使用的epoll网络IO模型。

处理大量的连接读写,Apache的select模型比较低效,下面做一个简单的比喻来理解epoll模型和select模型的区别。

好比如,你去大学宿舍寻找朋友,而select版宿管大妈会带着你一个一个寻找每个宿舍,直到寻找到你的朋友为止。而epoll版大妈会事先记录下每个人所对应的宿舍号码,然后告诉你哪个宿舍号码,你自己去寻找,不用大妈亲自带着你去寻找。同理,在高并发服务器中轮询IO是最消耗时间的操作之一,select和epoll模型谁的性能更高就十分清楚了。

综上所述,select和epoll模型对比表如下:

项目 Select Epoll
性能 随着连接数的增加性能急剧下降,处理成千上万的连接数目时,性能很差。 随着连接数目的增加,性能基本没什么变化,处理上万的连接数目时,性能依然较好。
连接数量 连接数目有限制,最大限制数目1024,如果想要处理大于1024的连接,需要修改宏定义FD_SETSIZE,并且重新编译。 连接数无限制但要注意系统的ulimit nfile设置
内在处理机制 线性轮询 回调callback
开发难度

你可能感兴趣的:(Nginx和Apache比较)