1. 程式人生 > >linux kjournald 程序IO高的處理辦法

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

重新進行觀察。