Couchbase
Couchbase 將文件寫入磁碟的時間是什麼時候?
Couchbase
正如標題所說,將文件寫入磁碟的時間是什麼時候?每 60 秒?每1秒?每 100 毫秒?或者每次有對該文件的讀取命令?
我將回答您的問題,因為我列出了通過 Couchbase 進入磁碟的更高級別的流對象。
- 對象由應用程序寫入託管記憶體
- 同時,將指向該對象的指針放入隊列(磁碟寫入隊列)中,以便將該對象持久化到數據庫儲存引擎,目前稱為 Couchstore。一個指針也被放入複製隊列以將該對象複製到副本,但這是另一個討論。
- 根據伺服器資源,即磁碟寫入速度,對象將被移動到 Couchstore。如果傳入的數據量很大並且磁碟很慢,則磁碟寫入隊列可能會變得非常大。這是在調整集群規模時需要考慮的一個區域。這不僅與原始讀/寫速度有關,還與隊列如何填充和排空有關。您希望磁碟填充率和耗盡率盡可能接近,並且磁碟寫入隊列盡可能接近 0。如果您要使用 PERSIST_TO 樣式寫入,這一點尤其重要。
- 一旦它到達 Couchstore,它就會被持久化到磁碟上。如果我沒記錯的話,那裡有一些批處理,每個 vBucket 1000 個。這是為了提高性能。此外,雖然有一個 OS 緩衝區(我之前使用該術語時不正確),但 Couchbase 並不依賴它,但每批之後都有一個 fsync。
需要記住的一件事是,幾乎所有這些都可以使用 Admin Rest API 進行監控或在 WebUI 中查看。如果您關心性能,這些都是持續監控的理想選擇。