本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文介绍Linux系统的ECS实例运行卡顿,在/var/log/messages
日志中出现类似“INFO:task jbd2/vda1-8:366 blocked for more than 120 seconds”
错误的原因和解决方案。
问题现象
在Linux系统的ECS实例运行时出现卡顿、系统响应变慢、某些进程无法正常运行、系统负载较高等现象,同时,在/var/log/messages
日志中出现大量类似如下的错误信息。
[8291809.483930] INFO:task jbd2/vda1-8:366 blocked for more than 120 seconds.
问题原因
jbd2
是Linux
内核中用于管理日志化文件系统(如 XFS 和 EXT4)的日志系统。它的全名是 "Journal Block Device",意思是日志块设备。当在/var/log/messages
日志中出现类似“INFO:task jbd2/vda1-8:366 blocked for more than 120 seconds”
,这通常意味着磁盘操作遇到了某种瓶颈,可能是由下述几个原因导致。
进程卡住(blocked):当某个进程在执行过程中出现死锁、内存泄漏或者其他异常问题时,该进程可能会卡住,无法继续执行,出现此报错。
系统内核问题:当系统内核存在漏洞或者其他问题时,可能会出现此报错。
系统资源紧张:ECS实例中应用或进程占用系统资源使用率(如CPU、内存、磁盘等)过高时,可能会出现此报错。
解决方案
出现该问题的原因比较复杂,您可以参考以下步骤进行排查。
重启实例。
在系统无法正常运行时,您可以尝试重启实例,以恢复实例到正常状态。具体操作,请参见重启实例。
确认当前文件系统的日志记录功能配置。
运行如下命令,查看
jbd2
进程信息。sudo ps -ef | grep jbd2
回显信息示例如下。
root 370 2 0 15:50 ? 00:00:00 [jbd2/vda1-8] root 371 2 0 15:50 ? 00:00:00 [jbd2-ckpt/vda1-] root 1910 1833 0 15:52 pts/0 00:00:00 grep --color=auto jbd2
运行以下命令,查看文件系统是否启用了日志记录功能。
sudo dumpe2fs /dev/vda1 | grep has_journal
回显结果包含
has_journal
内容,表明该文件系统启用了日志记录功能。dumpe2fs 1.43.5 (04-Aug-2017) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
运行如下命令,查看当前操作系统的内核版本信息。
sudo uname -a
(条件可选)升级内核版本。
如果回显信息显示内核版本号过低,您可以考虑通过升级内核版本来解决此问题。具体操作,请参见升级Linux ECS实例内核。
升级操作系统内核是一个比较复杂且风险较高的操作,可能会导致系统不稳定或出现兼容性问题。在进行升级前,建议备份重要数据,了解升级过程和可能出现的问题,并谨慎操作。您可以通过为实例创建快照完成数据备份,具体操作,请参见创建快照。
(条件可选)升配实例规格。
当因实例规格较低导致负载高及资源不足时,您可以升配实例规格来解决。更多详情,请参见Linux实例负载高问题排查和异常处理和升降配方式概述。
- 本页导读 (1)
- 问题现象
- 问题原因
- 解决方案