2013-04-10 42 views
3

一些細節; 我在與IIS相同的機器上運行AppFabric 1.1的開箱即用配置。 我沒有啓用AppFabrics的本地緩存,因爲我對這個本地緩存邊界之外的性能感興趣。AppFabric緩存 - 令人難以置信的緩慢或配置錯誤?

現在很明顯的進程內緩存樣的httpRuntime緩存將是超級快。事實上,它能夠檢索一個數據集im檢測,其中包含大約14,000條記錄(並且在序列化時約爲25MB),大約在10毫秒以下。

但是,從應用結構檢索相同數量的數據大約需要9秒。 顯然這是一個巨大的差異,因爲我永遠不能使用這個作爲任何形式的替換(我暗自希望我可以)。

這種表現聽起來是對的嗎?是否有任何明顯的缺陷在配置中錯過了?

+1

我有完全相同的問題,希望這個問題導致一些具體的答案。 – Scott 2013-04-11 13:32:39

回答

2

我會盡量回答....

首先,你是不是比較同樣的事情:當你從什麼的httpRuntime緩存中,你得到的內存初始項目的引用。如果某些代碼修改此項目,則所有其他用戶/線程都會看到更改。這就是爲什麼有時會推薦克隆您放入本地緩存的所有內容。

因爲AppFabric的緩存設計爲Web農場,你不能這樣做,因爲對象需要通過網絡(即使主機是在同一臺機器)進行發送。所以,數據項使用NetDataContractSerializer進行序列化。

AppFabric的很簡單,因爲它是不適合這個比的httpRuntime不是更快。它專爲WebFarms和大量數據而設計,可將應用程序導向更高的可靠性,可伸縮性和性能。

舉個例子,在我的公司,我們只使用的httpRuntime緩存在幾年前。現在這完全不可能,因爲我們有超過30臺服務器並且數據庫過載:AppFabric是一個減少數據庫負載並提高Web應用程序性能的完美解決方案(來自緩存集羣並且不從數據庫加載的項目)。

如果你只有一臺服務器,這是相當肯定,我們將沒有使用的AppFabric任何優勢。還建議使用專用緩存主機。

最後,我敢肯定,也有東西給你的對象做,因爲14 000數據集非最佳!