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
开发难度
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容