2

Mono 3.2 MVC4 WebAPI應用程序正在Debian x64 VPS服務器中運行。單聲道從源代碼編譯並使用4.5子樹。 應用程序需要Chrome或Safari瀏覽器。如何使用Mono WebAPI應用程序實現工作Web服務器

刷新瀏覽器窗口幾次後,服務器無法正常工作。我試過所有已知免費possibilites:

的Apache +是mod_mono

按下瀏覽器的刷新按鈕幾次服務器隨機返回500錯誤的一些網頁 和Apache錯誤日誌包含後「未能映射路徑」異常。

我張貼在

https://stackoverflow.com/questions/20356779/how-to-fix-failed-to-map-path-errors-in-mono-mvc4-application

單ASP.NET郵件列表中沒有任何反應。

服務器中有很多單聲道應用程序,也許mod_mono選擇了錯誤的線程,或者在單聲道的webapi映射實現中是否存在一些bug。

的Nginx +單FastCGI的-server4.exe

按住F5鍵,使200%的CPU使用率永遠單的FastCGI-server4.exe

我張貼在

https://stackoverflow.com/questions/20512978/how-to-limit-mono-197-cpu-usage-in-mono-fastcgi-server

單ASP.NET郵件列表中沒有任何搜索解決方案ñ。

是看起來像有缺陷的單FastCGI的服務器或者它不是單聲道3.2

兼容使用xsp4.exe直接

它會導致瀏覽器是否在Chrome「服務器不返回數據」窗口刷新幾次。

https://code.google.com/p/chromium/issues/detail?id=329311

張貼了這個沒有響應。

也許xsp4沒有正確實現http協議。

沒有嘗試過ServiceStack,因爲它不能用於需要的閉源開發。此外,應用程序還使用圖像,CSS,js文件和MVC視圖,這些視圖也需要提供。

如何創建正確的服務器爲單聲道返回正確的數據?

mono --trace=E:System.Exception YourApp.exe 

這種方式是非常可能的,你覺得是什麼原因造成的負荷:

+0

ServiceStack是免費的根據FSF – knocte

+0

根據servicestack.net/pricing免費只是非常有限的版本。關於未能映射路徑錯誤,可能很容易解決。我發現可能導致這種情況的單聲道源代碼行。如何獲得有關它的附加信息,mono在引發此異常時不會寫入其他信息? – Andrus

+0

限量版支持!付費版本中沒有更多功能,但如果您的軟件不是開源的,則無法使用免費版本。我認爲你不明白AGPL許可證。 – knocte

回答

1

當500錯誤發生,在某處單類庫引發了異常,您可以通過使用跟蹤瞭解更多在每種情況下都會遇到問題(要爲mono-fastcgi執行此操作,您需要在調用mono-fastcgi-server4.exe的腳本中添加trace參數)。

+0

如果無法映射路徑異常apache error.log包含我發佈在http://stackoverflow.com/questions/20356779/how-to-fix-failed-to-map-path-errors-in- mono-mvc4-應用程序。堆棧跟蹤可能位於https://github.com/mono/mono/blob/mono-3.2.1-branch/mcs/class/System.Web/System.Web/HttpRequest.cs#L1565中的第1565行。它發生在應用程序代碼被執行。追蹤提供哪些額外的信息來解決這個問題?如何修復它或獲得有關原因的更多信息?在多次瀏覽器刷新之後,它總是在不同的調用中發生。 – Andrus

+0

太棒了!你越來越接近解決問題。現在要弄清楚爲什麼這個異常不會在低負載下拋出,爲什麼它會在重負載下拋出。可能是因重負而暴露在某處的競賽狀況?您需要非常仔細地檢查該HttpRequest類 – knocte

+0

在此服務器中運行有幾個MVC4應用程序。也許mod_mono或mod_mono_server將請求傳遞給錯誤的線程。負載不重:瀏覽器刷新後,我會等待所有通話完成並查看Chrome控制檯。如果控制檯是空的,這是重複的。在Chrome控制檯中刷新了500次錯誤後,總是會出現apache錯誤日誌中的這個異常。它在不包含Ajax調用的應用程序主頁中不會發生。 – Andrus

相關問題