linux kjournald 程序IO高的處理辦法
案例:
開發部門反映該伺服器(Mysql)ssh登入時響應慢,甚至無響應,登入失敗。
分析:
初步判斷是記憶體不足或者高io導致,分別用top和free命令查看了,記憶體沒問題。然後鎖定磁碟IO,程序追蹤。
由於不知道哪個程序產生的高的IO操作,所以先追蹤下是哪個程序的IO較高。
1、停止系統日誌
/etc/init.d/syslog stop
2、停止審計日誌
/etc/init.d/auditd stop
3、啟用block_dump
echo 1> /proc/sys/vm/block_dump
4、通過下面命令查找出IO高的程序
dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort | uniq -c | sort -rn | head
2056 kjournald
1087 pdflush
3 cronolog
1 mysqld
這裡我們發現kjounald程序佔用IO較高
5、關閉block_dump
echo 0 >/proc/sys/vm/block_dump
6、啟動系統日誌和審計
/etc/init.d/syslog start
/etc/init.d/auditd start
根據系統需要也可以不啟動,這邊業務主要是日誌系統(mysql資料庫主要是寫入操作)
kjounald程序是ext3系統的日誌程序,我的處理方法就是關閉它,因為mysql資料庫有自己的日誌
1、檢視檔案系統首付開啟日誌功能了
tune2fs -l /dev/sda7 | grep 'has_journal'
如果返回結果有has_journal說明系統開啟了日誌功能
2、關閉mysql
service mysql stop
3、重新以只讀方式開啟
mount -o remount -o ro /dev/sda7
4、去掉檔案系統has_journal屬性
tune2fs -O ^has_journal /dev/sda7
5、重新以讀寫方式掛載檔案系統
mount -o remount -o rw /dev/sda7
6、啟動mysql
service mysql start
重新進行觀察。