2012-03-06 47 views
-1

有沒有其他人在切換到NHibernate後出現CPU峯值?升級後的Asp.net NHibernate CPU性能

大約2年前我們轉向使用NHibernate。從那以後,我們在服務器運行時使用60-80附近的CPU時遇到了問題。我們也遇到了服務器內存不足的問題。

我們一直被告知優化我們的查詢。我們所做的只有有限的成功。直到我最近從NHibernate 2.1升級到3.2,我們終於看到了CPU的改進。它從60%的平均下降到30%左右。我很驚訝,許多認爲自己是專家的人告訴我說,升級NHibernate只會產生有限的改進(如果有的話)。

我的問題是...有沒有其他人注意到NHibernate的CPU峯值nd他們看到任何改進之後做一個主要的版本升級。最後,爲什麼新版本表現更好?我知道NHibernate 3對linq有更好的支持,大約70%的查詢使用Linq,所以我的猜測可能是我看到更好的性能的一部分。

此外,有沒有人有任何想法我可以樂觀NHibernate產生更好的CPU性能,而不是升級我已經完成的DLL。

我目前正在運行NHibernate 3.2和流利的NHibernate 1.2分別從2.1和1.0升級。

+0

數據庫和網站是否在同一臺服務器上? – Rippo 2012-03-06 06:48:57

+0

也是這個SQL服務器? – Rippo 2012-03-06 06:50:26

+0

Windows Server 2003,DB在單獨的服務器上,SQL Server 2005. DB服務器相對穩定,沒有CPU峯值。 – matwonk 2012-03-06 17:51:37

回答

3

我懷疑你被告知與我即將推薦的相同,但我希望你看看所有的可能性,並打折。

Weve consistently been told to optimize our query - 懷疑總是與ORM生成的SQL或執行查詢所花費的時間有關。這是合理的建議,您必須使用以下方法來反駁這一點。

首先,我將在運行一週的實時數據庫服務器上設置一個trace。完成此操作後,您可能會發現您會收到有關索引或SQL相關問題的建議。

其次,我會在我的開發框中啓動NHProf,並針對大量使用的頁面或頁面運行一些壓力測試,這些頁面或頁面有很多數據庫行程,以查看NHibernate在幕後發生了什麼。 NHProf會爲您提供有關各種問題的建議,包括:選擇n + 1,結果不受限制,返回的行數很大,查詢的連接數太多等等。再次,這個工具對於彌補SQL服務器和代碼之間的差距非常寶貴。

希望在練習之後,您將對如何解決某些問題,介紹緩存或如果您發現沒有任何項目需要解決的問題給出寶貴意見,然後發佈給NHUser小組。

畢竟,如果你想到它,數以萬計的用戶使用NHibernate。我已經使用了NHibernate多年,並訂閱了NHusers組,並且我之前沒有看到過CPU問題。總是事實證明是或者;生成的SQL,數據庫處於壓力下或正在被水合的大型記錄集

+0

感謝您的信息。我將檢查分析器和sql跟蹤。我沒有在我們託管的其他服務器上出現CPU尖峯問題。就這一點來說,這個服務器與其他服務器之間的區別在於其他服務器有大約20個使用NHyrbinate的站點,我所說的這個服務器有大約510個使用NHybrinate的站點(它們都使用共享代碼)。基本上相同的代碼,每個網站的設計都不相同。 – matwonk 2012-03-06 17:52:51

+0

Rippo,我在同時觸發多個Ajax請求時遇到問題。其中每個都有爲它創建的會話。這是不好的做法嗎?如果是這樣,你能推薦一個解決方案嗎? (我有一個問題張貼在這裏: http://stackoverflow.com/questions/14615216/moving-from-ef-to-fluent-nhibernate-memory-leaks-architecture – Chazt3n 2013-01-30 23:48:04