IIS + ASP.NET vs(NGINX + FastCGI + Mono或XSP)的性能?

每个可以处理多less请求? 需要多lessRAM?

正如我记得FastCGI是打开初始化进程,每个可以处理一个请求。

那么multithreading呢?

    大约一年前,微软发布了一个名为StockTrader的IIS + WCF基准。 不完全是一个网页导向的基准。 无论如何,它显示了使用IIS,工作进程和.NET代码的一些非常好的性能。

    7或8年前,networking负载的基准更加活跃。 但是从某种程度上来看,它的性能performance如此之好,以至于在单个标准的高容量英特尔服务器上,无论您是使用Linux +? 或Windows + .NET,你会得到非常好的性能。 (假设合理的应用程序devise)。

    我不能真正评论,在PHP和FastCGI。

    我不知道谁在同一个硬件上对Linux + Mono + XSP和Windows + .NET + ASPNET进行了基准testing。

    我正在积极开发PHP和ASP.Net。 我不能声称IIS或NGINX的深刻知识,但我很熟悉Apache和Lighttpd。

    ASP.Net使用了一个线程化的体系结构,这个体系结构本身就是Web服务器的一部分。 静态variables在请求之间和用户之间保持其值。 这就是ASP.Net最大的优势所在。 共享内存存储在每个单独的进程内部和线程之间。 单独的进程不共享内存。 所以当你扩展到一个服务器之外时,这个优势就丧失了。

    PHP以老式的CGI风格构build,每个请求都是空白的。 这意味着任何公共信息必须从普通商店取得或完全重新生成。 PHP不慢,这是不同的。 PHP中的大多数主要操作都是调用用C语言编写的模块,所以它们闪电般快速。 自己执行的PHP并不像编译语言那样快,但绝不是慢的。 PHP中有非常常见的模块,这些模块caching编译(内存)版本的代码,可以提高4到10倍之间的性能。

    PHP已经存在了一段时间了,它的CGI风格存在很多解决scheme。 xcache提供了一个非常类似于ASP.Net的静态variables的值存储。 Memcache提供稍慢但更好的扩展(物理服务器之间)解决scheme到持久性共享variables。

    ASP.Net提供了更多的forms和结构。 但不好的程序员可以用任何语言搞乱。 如果您selectASP.Net,您应该调查一些优秀的非微软库进行开发。 (如NHIbernate& http://www.castleproject.org/

    我个人的偏好(当我没有付费做的时候)是PHP。 即使这需要速度惩罚,开发起来也容易,扩展也不那么复杂(即使它需要比.Net更多的PHP服务器)。 服务器比程序员便宜得多。

    在任何一种情况下,任何Web> 2.0应用程序都将被绑定数据,数据库configuration将比语言select对性能产生更深远的影响。

    我做了一个简单的基准testing,在Windows 7上运行在IIS7上的asp.net mvc3网站,以及在mod_mono和mono 2.11.2上运行在centos 6.2上的网站。 它们都是在虚拟机箱中运行的相同硬件上的虚拟机。 实际的机器是一个酷睿i5。

    使用来自同一networking上不同linux机器的apache工作台(ab -n 1000 -c 100)

    Centos 6.2 (default settings, no other sites running on 8088) Server Software: Apache/2.2.15 Server Hostname: 192.168.1.208 Server Port: 8088 Document Path: / Document Length: 24 bytes Concurrency Level: 100 Time taken for tests: 3.401 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 354000 bytes HTML transferred: 24000 bytes Requests per second: 294.01 [#/sec] (mean) Time per request: 340.124 [ms] (mean) Time per request: 3.401 [ms] (mean, across all concurrent requests) Transfer rate: 101.64 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 3 6.4 0 25 Processing: 14 321 71.1 325 483 Waiting: 14 321 71.1 325 483 Total: 39 324 67.8 326 483 Percentage of the requests served within a certain time (ms) 50% 326 66% 344 75% 358 80% 370 90% 408 95% 426 98% 441 99% 445 100% 483 (longest request) (Again default settings, Windows 7 x64) Server Software: Microsoft-IIS/7.5 Server Hostname: 192.168.1.115 Server Port: 8088 Document Path: / Document Length: 27 bytes Concurrency Level: 100 Time taken for tests: 0.469 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 294783 bytes HTML transferred: 27351 bytes Requests per second: 2131.09 [#/sec] (mean) Time per request: 46.924 [ms] (mean) Time per request: 0.469 [ms] (mean, across all concurrent requests) Transfer rate: 613.48 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 4 17 4.6 17 27 Processing: 12 28 6.9 28 61 Waiting: 9 22 6.9 22 55 Total: 24 45 7.0 45 67 Percentage of the requests served within a certain time (ms) 50% 45 66% 48 75% 49 80% 50 90% 52 95% 55 98% 59 99% 62 100% 67 (longest request) 

    我相信你可以调整设置等,但除非有一些容易,我错过了,IIS似乎是运行asp.net mvc快许多倍。

    视图本身基本上是空的,只有一个单词。

    这不是一个很好的基准,当然不是我给老板的东西。 我怀疑mono会用nginx或lighttpd得到更好的显示效果,但我现在没有设置它们。

    我们在IIS和XSP中都运行了一个asp.net MVC应用程序,IIS在性能和可靠性方面都比XSP好。

    您可以很容易地进行性能testing,但是XSP并不是真正为生产环境devise的。 我们提出了一个错误,导致XSP进程偶尔崩溃,这是他们不打算修复的(显然它涉及到一些深层架构的变化)。 最后,我们刚刚打包并重新启动了进程,但是您应该知道这两个(XSP和IIS)是非常不同的野兽。

    如果你在Windows上,使用IIS。 IIS7并没有那么糟糕。

    IIS和nginx有很好的基准:(和Apache,Cherokee,G-WAN,Lighttpd,Ulib等)

    Linux上

    http://gwan.ch/en_linux.html

    Windows上

    http://gwan.ch/en_windows.html

    使用PHP,Java和C#

    http://gwan.ch/

    我从来没有见过在其他地方做过如此清晰的比较。 testing源代码(在PHP,Java,C#中)也可以在这里find:

    http://gwan.ch/source/

    希望能帮助到你。

    我在这里有一个小的意见,过去几年,我与IIS的高标准的网站.net C#工作,我们开始与IIS6,现在转移到IIS7。 99%的IIS在.net(caching,处理请求等等)方面做得非常好。

    由于Linux比较便宜,而且我喜欢centos,所以我尝试在一个testing环境下迁移到mono,并注意到性能发生了一些变化。 也许我不知道如何build立良好的环境。

    我现在的亲身经历:

    如果我想用PHP做任何网站,我将它安装在我的Linux服务器上(Centos6,nginx,php-fpm,mariadb,apccaching)

    当我需要在C#中做一些事情时,我会在Windows Server 2008上安装它,减less头痛,提高可用性和支持。

    微软服务器的唯一缺点是价格。 如果你是一个小型开发人员,MS系统的最低硬件要求比Linux机器要低很多。

    我不会推荐IIS。 首先,它错过了很多非常重要的function(如dos_evasive),其次,它使用了大量的内存,第三,configuration是一个噩梦,并在每个版本的IIS上不同(写'a'文档 – 写3 [iis 5,6,7])。 IIS的性能也不好,第四你会遇到内存分割问题(​​小心每20分钟重启一次服务器?),第五个也是最致命的,它需要一个MS操作系统(1到2 GB的ram只是为了运行操作系统) 。 除此之外,一个体面的防火墙软件还需要额外的财富。

    我来自Linux背景,现在我在一家窗口公司工作。

    我只能告诉你,这个开关是我做过的最糟糕的决定。
    您不仅需要在一个臭名昭着的不稳定的平台上工作,而且在编写安装程序时也会遇到困难(windows安装程序无法链接,每个Linux安装程序都可以,应用程序无法删除它们自己 – 所以没有真正的自我更新应用程序,你必须自己编写更新程序,而在Linux中,要处理所有事情)。 你也将切换到一个平台,其中IE是默认浏览器。
    我只能告诉你,我花了几天的时间让Web应用程序与IE兼容,因为你不需要用你的代码修复所有这些主要IE浏览器的bug,因为IE不能在Linux上运行(以及你可以,但它不合法)…