服务器IO问题(疑似Redis导致的)

【字号: 日期:2022-08-26浏览:37作者:雯心

问题描述

某生产环境服务器(多个服务都安装在1台服务器上)

服务器负载一致居高不下,升级过硬件以后有好转,CPU和内存的有所缓解,不过磁盘IO的依然如故;

使用nmon查看由多块磁盘组成一个LVM分区,写一直是100%;

使用lsof查看,该分区的主要读写的是MySQL和Redis;

使用iotop查看io排行,前几个分别是:

[jbd2/dm-0-8][flush-253:0][redis][mysql]

对前2个进程不太了解,有没有那位比较熟悉的大神指点下,前2个进程的用途以及他们和Redis的IO优化建议;

问题解答

回答1:

排查这个问题从三方面考虑:1、应用层

redis 状态监控,看是否有应用性能问题

mysql 状态监控,查看慢查询日志等相关的问题点

2、系统层flush-253:0 和 jbd2/dm-0-8 他们都是操作系统真对磁盘和文件系统的进程,本质上来说还是 应用层产生的系统操作。

3、硬件查看磁盘状态,服务器硬件问题

回答2:

redis io高的问题我遇到过,和rdb方式存盘有关redis默认配置save 900 1save 300 10save 60 10000以上表示的意思是,900秒之内对服务进行了至少一次修改 或300秒之内服务器进行了至少10次修改 或60秒之内对服务器进行了至少10000次修改会触发一次存盘.rdb方式是会将主进程fork一个子进程,然后将子进程的数据全部存到磁盘上,注意是全部.也就是说,比如你有一个redis占用了10G内存,那么每隔最多900秒,这10G内存里的数据会全部存到磁盘上,如果你的设备io能力比较差,或者redis数据量还要更大,那么会出现在一个存盘周期里无法完成存盘操作,这样的话,就会一直存盘,就会引发io高.解决的办法可以1 延长redis存盘的周期.2 对redis进行切分,单个redis进程不要保存太多数据.3 尝试使用aof方式.

相关文章: