有人得到 IIS 和 .NET 與 Cherokee 和 Mono 的效能數據比較嗎?

有人得到 IIS 和 .NET 與 Cherokee 和 Mono 的效能數據比較嗎?

我正在設定一個開發伺服器,並希望將其設定為使用 Mono 為 ASP.NET 頁面提供服務。我打算用 Cherokee 和 Mono (http://www.cherokee-project.com/doc/cookbook_mono.html)並且想知道是否有人做過任何效能測試,比較基於 Unix 的堆疊和基於 Windows 的堆疊。

答案1

在測試 Mono/Linux 與 .NET/Windows 工作負載時,您必須記住,發揮作用的不僅僅是執行時間環境。

Linux 在某些方面比 Windows 表現更好(大多數 IO 和網路操作對於類似的 C 程式來說往往更快)。同時.NET擁有更先進的垃圾收集器和更先進的JIT編譯器。

當談到類別庫時,它實際上取決於您使用的程式碼路徑。正如 JacksonH 在上一篇文章中所說,您可以存取在一個實作中已最佳化的程式碼路徑,但在另一個實作中則不然,反之亦然。

在 ASP.NET 工作負載上,您必須記住,預設設定會將所有傳入請求路由到單一「工作」進程,mod_mono 和 Cherokee 使用類似的方法:

多個 HTTP 伺服器連接到一台 mod-mono-server
(來源:mono-project.com

至少在Apache 中,我們支援一種機制,您可以將應用程式工作負載分配給多個工作線程,這在高負載下很有幫助,因為它避免了任何進程內鎖定,並為每個工作線程提供了一個完整的線程池來工作:

使用 mod_mono 將請求路由到不同的 ASP.NET 主機
(來源:mono-project.com
有關如何配置此設定的詳細資訊可在此處找到:

http://mono-project.com/Mod_mono

答案2

這有點沒有答案。然而這裡並沒有真正的答案。不幸的是,這個東西高度依賴應用程式。您的應用程式可能會遇到 Mono 恰好做得很好的東西,或者您可能會大量使用實現不佳或存在一些錯誤的東西。這並不是 Mono 比 IIS 慢/快 X 倍的情況。

我的建議是,將您的應用程式部署在兩個不同的 EC2 執行個體(一個 Windows 和一個 Mono)上,並在那裡進行測試。如果您發現 Mono 實例存在重大問題,請報告它們,我們將盡力改進問題。

話雖如此,我可以根據個人經驗告訴您,Mono aspx 的表現確實非常好。

相關內容