centos6下jbd2进程占用大量IO处理

刚在尝试重现一个bug时,好像在killed mysql一段时间之后,io一直很高,如下:

12:40:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:50:01 PM     all     12.86      0.00     14.40      1.58      0.00     71.16
01:00:01 PM     all     13.38      0.00     15.34      1.50      0.00     69.79
01:10:01 PM     all     34.34      0.00     21.24      2.13      0.00     42.29
01:20:01 PM     all     36.03      0.00     22.13      3.45      0.00     38.40
01:30:01 PM     all     36.80      0.00     21.43      2.53      0.00     39.24
01:40:01 PM     all     36.86      0.00     20.56      2.26      0.00     40.32
01:50:01 PM     all     38.22      0.00     19.26      2.10      0.00     40.41
02:00:01 PM     all     36.12      0.00     20.52      1.80      0.00     41.56
02:10:02 PM     all     43.75      0.00     20.05      1.97      0.00     34.23
02:20:01 PM     all     39.93      0.00     19.16      2.10      0.00     38.81
02:30:01 PM     all     43.93      0.00     19.38      5.43      0.00     31.26
02:40:01 PM     all     40.27      0.00     21.20      2.21      0.00     36.32
02:50:01 PM     all     39.17      0.00     21.56      2.10      0.00     37.16
03:00:01 PM     all     48.89      0.00     19.51      4.21      0.00     27.38
03:10:01 PM     all     25.04      0.00     16.64     13.96      0.00     44.37
03:20:01 PM     all     13.49      0.00     18.75     15.09      0.00     52.67
03:30:01 PM     all     12.69      0.00     17.68     15.35      0.00     54.27
03:40:01 PM     all     17.22      0.00     13.42     15.50      0.00     53.86
03:50:01 PM     all     19.16      0.00     10.48     14.86      0.00     55.49
04:00:01 PM     all     11.95      0.00     14.80     15.52      0.00     57.73

iotop了一下,jbd2进程占用大量IO处理,搜索了下,关于jbd2,jbd2是ext4文件系统的一部分。ext4文件系统出现过此bug,bug原理大致是,文件的写和请求会导致其中一个int型的值不断增大,最后增大到超出了自身的范围 —— 变成负值 。就会触发该bug ,而想要达到该值并不容易,需要几个月后才会出现。

解决方法:

1、yum升级kernel ,重启查看是否有效。(在此之前先要做好备机使用的准备工作)

2、重装系统分区,完成后重新挂载数据分区。

3、验证临时补丁的可用性。并在现网修复。

参考:http://www.361way.com/ext4-jbd2-io-bug/2963.html

时间: 2024-10-20 18:05:27

centos6下jbd2进程占用大量IO处理的相关文章

linux下查看进程占用端口和端口占用进程命令

Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端口号:netstat -anp|grep pid Linux下查看端口号所使用的进程号: 使用lsof命令: lsof –i:端口号

windows 下查看进程占用

//查找出占用8086端口进程的ID netstat -nao | findstr 8086 //本机输出效果为: TCP 0.0.0.0:8086 0.0.0.0:0 LISTENING 804 //很显然,进程ID是804 //找出ID为804的进程名 tasklist | find 804 //本机输出效果为: emule.exe 804 Console 1 82,068 K //哈哈,原来 是emule占用了我的8086端口.

linux查看哪个进程占用磁盘IO

方法一: $ iotop -oP 命令的含义:只显示有I/O行为的进程 测试结果: 方法二: $ pidstat -d 1 命令的含义:展示I/O统计,每秒更新一次 测试结果: 原文地址:https://www.cnblogs.com/weifeng1463/p/11080028.html

win/linux 下使用 psutil 获取进程 CPU / memory / IO 占用信息

psutil - A cross-platform process and system utilities module for Python 1. 安装 pip 安装即可. windows 下需要安装 vs2008,否则报错: Unable to find vcvarsall.bat 如果已经安装 vs2010 / vs2012 则需要设置环境变量,VS90COMNTOOLS 指向已有的 vs 变量. vs2010 设置如下: VS90COMNTOOLS = %VS100COMNTOOLS%

生产环境下JAVA进程高CPU占用故障排查

问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况.2,程序代码有问题,出现死循环,可能性极大. 问题解决:1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出.2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下

Linux下如何查看哪些进程占用的CPU内存资源最多

linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用内存资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head 命令组合解析(针对CPU的,MEN也同样道理): ps aux|head -1;ps aux|grep -v PID|sort -rn -k

Linux下实现脚本监测特定进程占用内存情况

Linux系统下,我们可以利用以下命令来获取特定进程的运行情况: cat /proc/$PID/status 其中PID是具体的进程号,这个命令打印出/proc/特定进程/status文件的内容,信息比较多,包含了物理内存/虚拟内存的使用状况,监控进程是否有内存泄露的问题,一般查看进程占用物理内存的情况: VmRSS: xxxkB 可以采用grep命令过滤出我们需要的信息: cat /proc/$PID/status | grep RSS >> "$LOG" #过滤包含RS

win7 win10下80端口被System进程占用的解决方法

用如下方法可以解决System进程占用80端口的问题:打开RegEdit:开始-运行-输入regedit-调出注册表找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP找到一个DWORD值Start,将其改为0重启电脑,System进程将不会占用80端口就可以打开你的apache了 这种方法确实暂时解决了我的问题,应该就是这样的,但是后面又来问题了.Apache又无缘无故的打不开了.于是,最后终于发现了进程有个SQL Server

linux下如何查看80端口占用情况?是被哪个进程占用?如何终止

查询端口是否被占用,被哪个进程占用有两种方式: 1.netstat -anl | grep "80" 2.lsof -i:80 终止进程的方式:kill pid