效能調優基礎篇之無鎖實現cache更新

2021-06-23 04:36:54 字數 709 閱讀 1654

業務需求:乙個執行緒寫,n個執行緒讀

為了提高在高併發情況下的查詢效率, 應用在記憶體中維護了乙份cache,cache內容需訪問db實時更新.

更新cache,無非批量更新與增量更新這兩種空間與時間的權衡。 

增量更新過於複雜,這裡採用了批量更新的方式。當然最重要的是要保證cache執行緒安全。最容易想到的方法是為cache加讀寫鎖, 如果僅僅如此,效能會收到極大影響。

一段**勝千言:

/**

* created with intellij idea. user: jianjun.yu date: 14-8-12 time: 下午2:08

*/public class memindexmanager

mapcacheuseswap = formdb();

cache = cacheuseswap;

}private string query(string key)

private mapformdb()

}

可能你會覺得這樣就實現了執行緒安全, 真的假的?這也太誇張了吧!

呵呵, 可能你沒注意到修飾map的volatile關鍵字。還有就是複製操作就是一條機器指令。

這裡的業務需求就是乙個執行緒寫,n個執行緒讀。volatitle剛好符合這種情況。

還有就是這裡的cache並不一定就是乙個map,它適合與任何複製物件。

JVM效能調優篇

2.效能參照指標 1 執行時間 2 cpu時間 3 記憶體分配 4 磁碟吞噬量 描述io的使用情況 5 網路吞吐量 6 響應時間 3.加速比公式 加速比 1 f 3.效能調優層次 1 設計調優 2 調優 3 jvm調優 4 資料庫調優 5 作業系統調優 4.基本調優策略和手段 1 優化的一般步驟 確...

Apache 效能調優 參考篇

1 記憶體 適當選用適合大小的記憶體,保證谷峰負載時,有足夠的記憶體使用 2 使用ab測試apache效能 使用ab的缺點 不能更真實的模仿使用者的操作。3 調節保持連線的設定 keepalive on 在單一連線時進行多個請求 maxkeepaliverequests 200 單一連線時間可以允許...

Apache 效能調優 參考篇

1 記憶體 適當選用適合大小的記憶體,保證谷峰負載時,有足夠的記憶體使用 2 使用ab測試apache效能 使用ab的缺點 不能更真實的模仿使用者的操作。3 調節保持連線的設定 keepalive on 在單一連線時進行多個請求 maxkeepaliverequests 200 單一連線時間可以允許...