昨晚我在一個網站上做了一個負載測試。我發現我的一個共享緩存是瓶頸。我正在使用ReaderWriterLockSlim來控制數據的更新。不幸的是,有一次大約在同一時間有大約200次請求嘗試更新數據。這也與CPU使用率峯值一致。ASP.NET檢索平均CPU使用率
正在更新的數據位於ASP.NET緩存中。我想要做的是如果CPU使用率在75%左右,我想跳過緩存並在另一臺機器上點擊數據庫。
我的問題是,我不知道創建一個新的性能計數器來檢查CPU使用率是多麼昂貴。另外,如果我可能會喜歡過去2到3秒內的平均CPU使用率。但是,我不能坐在那裏計算CPU時間,因爲這需要比現在更新緩存所需的時間更長的時間。
有沒有簡單的方法來獲得平均CPU使用率?這有什麼缺點嗎?
我也在考慮總計鎖的等待計數,然後在某個閾值切換到數據庫。我對這種方法的擔憂是,更換硬件可能會在系統上承受更多的鎖而不會造成更多的鎖。而且爲閾值找到適當的平衡將會很麻煩,並且不考慮機器上的其他負載。但這是一個簡單的方法,簡單的是99%的時間更好。
在回顧了陳舊數據的概念以及數據的實際部分是陳舊的之後,它是有道理的:「您可以鎖定重新填充函數,併爲其他請求提供陳舊數據,直到該過程完成。」 .. 謝謝! – Sam 2010-05-24 23:14:22