目前只要整點的時候,bdflush就會將share monery重整,同時影響到Disk I/O的存取,導致影響系統程式的讀寫作業而發生錯誤。
在下已將原本的設定值,修改如下:
50 500 0 0 300 3000 80 50 0
vm.bdflush = 10 500 0 0 300 3000 80 50 0
10 500 0 0 300 3000 80 50 0
但結果還是沒有改善?不知有無前輩可以幫忙指導一下?感謝!
從50 500 0 0 300 3000 80 50 0到10 500 0 0 300 3000 80 50 0的差別是第一個參數由50%降為10%, 您的目的是要bdflush不斷的啟動以將dirty buffers寫入硬碟嗎? 第3與4的參數為0, 您有試過用128, 512嗎? 第6,和7的參數您有調過嗎? 有試過5000, 500嗎? 或其他的組合? 您的shmmax, shmall等參數有調過嗎?
bizpro大大,在下機器的記憶體8GB,記憶體幾乎用滿,原本第一個值是50的時候,bdflush將dirty buffers寫入硬碟時會嚴重影響我程式的IO讀寫(磁碟效能差也是原因之一,但目前無法改善),所以才將50改成10讓bdflush執行時寫入硬碟的資料看看是否可以少一點,來改善IO,如有錯誤還望請bizpro大大指導!
記憶體8GB,記憶體幾乎用滿....磁碟效能差也是原因之一,但目前無法改善
這有可能是核心的問題, 如果硬體系統已經無法負荷IO, 你也要冒著資料毀損的風險.
你有試過提昇到100%嗎? 看看延遲bdflush的啟動次數會如何. 第二, 三個參數是調控free buffers的準備數量, 是不是因為記憶體用滿才設為0? 小心這些參數會crash你的系統, 看起來好像機器操得很厲害.
大大!您說的沒錯!機器被操的很重!無奈公司不賺錢,目前暫停更新計畫!只好繼續稱著!
bdflush 被 pdflush 取代
pdflush 被 BDI 取代
看來伺服器年代有點久遠
你用 vmstat 請問 si 和 so 各多少?
用 free 看 swap 剩多少?
記得根據 IBM 和 ORACLE 官方說法,記憶體 8GB 合理的 swap 是 1.5x,
swap 的使用率應該維持約 30~70%,同時 si/so 的數值不應持續在 1x(兩位數),wa 不應該超過 30%。
如果你的系統 wa 很高、swap 很滿、si/so 很多,不論你如何調整,都無法解決的,這是硬體資源瓶頸。你只能:
1.升級硬體
或
2.改寫軟體(例如不要動不動就 full table scan)