案例:

开发部门反映该服务器(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

重新进行观察。



Logo

更多推荐