有没有人有将 IIS 和 .NET 与 Cherokee 和 Mono 进行比较的任何性能数据?

Lar*_*ier 8 performance mono .net asp.net

我正在设置开发服务器并希望将其设置为使用 Mono 为 ASP.NET 页面提供服务。我计划使用 Cherokee 和 Mono ( http://www.cherokee-project.com/doc/cookbook_mono.html ) 并想知道是否有人做过任何性能测试,将基于 Unix 的堆栈与基于 Windows 的堆栈进行比较。

jac*_*onh 7

这有点没有答案。然而,这里没有真正的答案。不幸的是,这件事高度依赖于应用程序。您的应用程序可能会遇到 Mono 恰好做得很好的东西,或者您可能会大量使用实现不佳或存在一些错误的东西。这并不是 Mono 比 IIS 慢/快 X 倍的情况。

我的建议是将您的应用程序部署在两个不同的 EC2 实例(一个 Windows 和一个 Mono)上,然后在那里进行测试。如果您发现 Mono 实例上存在重大问题,请报告它们,我们会努力改进。

尽管如此,我可以根据个人经验告诉您 Mono aspx 确实表现得非常好。


mig*_*aza 7

在测试 Mono/Linux 与 .NET/Windows 工作负载时,您必须记住,除了运行时环境之外,还有更多在起作用。

Linux 在某些方面比 Windows 表现更好(对于类似的 C 程序,大多数 IO 和网络操作往往更快)。同时,.NET 拥有更高级的垃圾收集器和更高级的 JIT 编译器。

当涉及到类库时,它实际上取决于您使用的代码路径。正如 JacksonH 在上一篇文章中所说,您可以找到在一个实现中优化过的代码路径,但在另一个实现中却没有,反之亦然。

在 ASP.NET 工作负载上,您必须记住默认设置会将所有传入请求路由到单个“工作”进程,mod_mono 和 Cherokee 使用类似的方法:

许多 HTTP 服务器到一个 mod-mono-server
(来源:mono-project.com

至少在 Apache 中,我们支持一种机制,您可以将应用程序工作负载分配到多个 worker,这有助于在高负载下避免任何进程内锁定,并为每个 worker 提供一个完整的线程池供其工作:

使用 mod_mono 将请求路由到不同的 ASP.NET 主机
(来源:mono-project.com
此处提供有关如何配置此设置的详细信息:

http://mono-project.com/Mod_mono