我正在设置开发服务器,并希望将其设置为使用Mono服务ASP.NET页面。我打算使用Cherokee和Mono(http://www.cherokee-project.com/doc/cookbook_mono.html),想知道是否有人将基于Unix的堆栈与基于Windows的堆栈进行了性能测试。
我正在设置开发服务器,并希望将其设置为使用Mono服务ASP.NET页面。我打算使用Cherokee和Mono(http://www.cherokee-project.com/doc/cookbook_mono.html),想知道是否有人将基于Unix的堆栈与基于Windows的堆栈进行了性能测试。
Answers:
在测试Mono / Linux与.NET / Windows工作负载时,您必须记住,不仅仅是运行时环境在起作用。
在某些方面,Linux的性能要优于Windows(对于同类C程序,大多数IO和网络操作往往更快)。同时,.NET具有更高级的垃圾回收器和更高级的JIT编译器。
对于类库,它实际上取决于您使用的代码路径。正如JacksonH在先前的文章中所说,您可以访问在一种实现中已优化的代码路径,而在另一种实现中未优化,反之亦然。
在ASP.NET工作负载上,您必须记住,默认设置会将所有传入的请求路由到单个“工作者”进程,mod_mono和Cherokee使用类似的方法:
(来源:mono-project.com)
至少使用Apache,我们支持一种机制,您可以将应用程序工作负载分配给多个工作程序,这可以在高负载下提供帮助,因为它避免了任何进程内锁定,并为每个工作程序提供了一个完整的线程池来进行工作:
(来源:mono-project.com)
有关如何配置此设置的详细信息,请参见:
这有点无答案。但是,这里没有真正的答案。不幸的是,这件事高度依赖于应用程序。您的应用可能会碰上Mono确实做得很好的事情,或者您可能正在大量使用实施不佳或有错误的东西。实际上,Mono比IIS慢/快X倍不是真正的情况。
我的建议是将您的应用程序部署在两个不同的EC2实例(一个Windows和一个Mono)上,然后在其中进行测试。如果您在Mono实例上发现了重大问题,请报告这些问题,我们将尝试改进。
综上所述,我可以从个人经验中告诉您Mono aspx确实表现出色。