Nginx 和 Apache 在 Windows 下的性能表现谁更好

 我来答
max的深林
推荐于2016-10-29 · TA获得超过2059个赞
知道大有可为答主
回答量:5925
采纳率:100%
帮助的人:5016万
展开全部
nginx 的高性能依赖于 Linux 2.6 内核的 epoll [1] 或是 BSD 内核的 kqueue [2] 提供高效的网络套接字状态轮询服务【时间复杂度为 O(1) 】。在没有这两个服务的内核上则退化成为性能低下的 select 【*nix, Windows 都有、时间复杂度为 O(n) 】. Windows 没有 epoll 和 kqueue,nginx 在 Windows 上用 select 表现自然不佳。

Windows 上类似 epoll/kqueue 的服务是 I/O Completion Ports [3]【Solaris 上也有】,理论上讲是比 epoll 更加先进的服务,因为它同时支持套接字、文件、管道【kqueue 类似】,而 epoll 不支持文件。也就是说不能用 epoll 做本地文件的异步 I/O。但不幸的是没有成熟的开源网络服务器使用 I/O Completion Ports。

Apache 的性能不好一概而论。它有好多种模式,主要的两种是:1、prefork 使用的是多进程 [4];2、 worker 使用得是多进程+多线程 [5]。Windows NT 平台上线程的效率比较高【进程的效率则相对 *nix 下低】,所以使用多线程模式性能更优。Apache 还有个专门为 NT 优化的模式 [6],用的是单进程+多线程。

至于说多线程同步 I/O 相对于使用 epoll/kqueue 异步 I/O 两种方式孰优孰劣,有兴趣的朋友可以参考
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式