業務需求:乙個執行緒寫,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 單一連線時間可以允許...