Linux与Windows 7 Web服务器性能的差异

我最近试过运行一些基准testing,我想在Windows上检查一些东西,并发现在同一台机器上的基本HTTP Web服务器与Linux和Windows之间有巨大的性能差异。

我testing了几个Web服务器IIS,Apache2,Lighttpd与不同的客户端Apache的AB和我自己的客户端,结果是相同的(请求每秒)ID显示一个简单的HTML网页(默认的Web服务器页面)尺寸:

IIS 7.5 Apache 2.2 Lighttpd Windows 750 800 - Linux - 9,300 22,000 

我试图在Windows上禁用反病毒,但结果并没有改变。

我不明白一件事,如何在相同的硬件(i5的2.4GHz的4G)的Web服务器在最琐碎的任务不能处理相同的负载。

即使你是“亲Linux”,我仍然无法得到它是如何不同,两个64位最新的操作系统(Linux 2.6.35和Windows 7),但差距在一个数量级。

环境:

  • 操作系统Windows 7 64位亲。 Linux的Ubuntu 2.6.35
  • 硬件i5 2.4 GHz,4GB内存
  • IIS 7.5,Apache 2.2
  • 客户ab:
  • 称为ab -c 5 -n 10000 http://127.0.0.1/

题:

  • 我可以错过什么,所以我得到巨大的差异?

在您投票结束之前:

注意这是一个真正的问题,因为我正在寻找可能影响如此巨大(数量级)的性能差异的可能因素,因为我无法相信Windows可以performance得如此糟糕。

任何人?

对于所有build议使用Windows Server 2008的响应者

这是AniVirus。 它没有正确禁用。

一旦被禁用,性能从600 req / s提高到5000 req / s – 不如Linux,但至less是合理的。

我会更有兴趣看到与服务器R2的比较。 Windows 7不应该运行Web服务器,但我同意结果的差异似乎极端。

你可以做一个testing,看看它是否与操作系统层或更低的操作是重新运行的Linuxtesting,而在一个坐在Windows 7的虚拟机。如果你遇到的数字相似,但稍微less一点,那么原来的Linux它certificateWindows 7是负责任的。 如果您遇到类似于Windows 7的数字,您可能在Windows 7使用您的硬件的方式有问题,可能是驱动程序问题或类似的低级别问题。

在使用有限数量的连接的情况下使用less量到不使用内容的静态页面是一个不好的testing。

你想要做的就是模拟30多个用户访问页面,这些页面同时拥有多个资源的PHP和MySQL。

在这种情况下,你会看到一个configuration良好的WAMP(就像我使用的WampDeveloper)匹配或者胜过类似的LAMP设置。

在Windows下,线程是首选的机制(相对于Linux上的基于进程的模型)。

确保你使用PHP作为基于线程的模块(不是FCGI进程,尽pipe这也可以)。

编辑您的Apache KeepAlive和MPM设置…

C:\ WampDeveloper \ CONFIG \ Apache的\额外\的httpd-default.conf

 KeepAlive On KeepAliveTimeout 1 

C:\ WampDeveloper \ CONFIG \ Apache的\额外\的httpd-mpm.conf

 ThreadsPerChild 64 ThreadLimit 64 

这将设置约64个线程,每个线程保持在同一个客户端大约1秒。

ab -c 32 -n 10000 http://127.0.0.1/page-with-PHP-and-MySQL-and-Assets.php