Lar*_*ier 8 performance mono .net asp.net
我正在设置开发服务器并希望将其设置为使用 Mono 为 ASP.NET 页面提供服务。我计划使用 Cherokee 和 Mono ( http://www.cherokee-project.com/doc/cookbook_mono.html ) 并想知道是否有人做过任何性能测试,将基于 Unix 的堆栈与基于 Windows 的堆栈进行比较。
这有点没有答案。然而,这里没有真正的答案。不幸的是,这件事高度依赖于应用程序。您的应用程序可能会遇到 Mono 恰好做得很好的东西,或者您可能会大量使用实现不佳或存在一些错误的东西。这并不是 Mono 比 IIS 慢/快 X 倍的情况。
我的建议是将您的应用程序部署在两个不同的 EC2 实例(一个 Windows 和一个 Mono)上,然后在那里进行测试。如果您发现 Mono 实例上存在重大问题,请报告它们,我们会努力改进。
尽管如此,我可以根据个人经验告诉您 Mono aspx 确实表现得非常好。
在测试 Mono/Linux 与 .NET/Windows 工作负载时,您必须记住,除了运行时环境之外,还有更多在起作用。
Linux 在某些方面比 Windows 表现更好(对于类似的 C 程序,大多数 IO 和网络操作往往更快)。同时,.NET 拥有更高级的垃圾收集器和更高级的 JIT 编译器。
当涉及到类库时,它实际上取决于您使用的代码路径。正如 JacksonH 在上一篇文章中所说,您可以找到在一个实现中优化过的代码路径,但在另一个实现中却没有,反之亦然。
在 ASP.NET 工作负载上,您必须记住默认设置会将所有传入请求路由到单个“工作”进程,mod_mono 和 Cherokee 使用类似的方法:
(来源:mono-project.com)
至少在 Apache 中,我们支持一种机制,您可以将应用程序工作负载分配到多个 worker,这有助于在高负载下避免任何进程内锁定,并为每个 worker 提供一个完整的线程池供其工作:
(来源:mono-project.com)
此处提供有关如何配置此设置的详细信息:
http://mono-project.com/Mod_mono