Linux实例运行卡顿,在/var/log/messages日志中出现“jbd2/vda1-8:366 blocked for more than 120 seconds”错误怎么办?

更新时间:2025-02-14 10:30:11
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

本文介绍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.

问题原因

jbd2Linux内核中用于管理日志化文件系统(如 XFS 和 EXT4)的日志系统。它的全名是 "Journal Block Device",意思是日志块设备。当在/var/log/messages日志中出现类似“INFO:task jbd2/vda1-8:366 blocked for more than 120 seconds”,这通常意味着磁盘操作遇到了某种瓶颈,可能是由下述几个原因导致。

  • 进程卡住(blocked):当某个进程在执行过程中出现死锁、内存泄漏或者其他异常问题时,该进程可能会卡住,无法继续执行,出现此报错。

  • 系统内核问题:当系统内核存在漏洞或者其他问题时,可能会出现此报错。

  • 系统资源紧张:ECS实例中应用或进程占用系统资源使用率(如CPU、内存、磁盘等)过高时,可能会出现此报错。

解决方案

出现该问题的原因比较复杂,您可以参考以下步骤进行排查。

  1. 重启实例。

    在系统无法正常运行时,您可以尝试重启实例,以恢复实例到正常状态。具体操作,请参见重启实例

  2. 确认当前文件系统的日志记录功能配置。

    1. 运行如下命令,查看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
    2. 运行以下命令,查看文件系统是否启用了日志记录功能。

      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
  3. 运行如下命令,查看当前操作系统的内核版本信息。

    sudo uname -a
  4. (条件可选)升级内核版本。

    如果回显信息显示内核版本号过低,您可以考虑通过升级内核版本来解决此问题。具体操作,请参见升级Linux ECS实例内核

    警告

    升级操作系统内核是一个比较复杂且风险较高的操作,可能会导致系统不稳定或出现兼容性问题。在进行升级前,建议备份重要数据,了解升级过程和可能出现的问题,并谨慎操作。您可以通过为实例创建快照完成数据备份,具体操作,请参见创建快照

  5. (条件可选)升配实例规格。

    当因实例规格较低导致负载高及资源不足时,您可以升配实例规格来解决。更多详情,请参见Linux实例负载高问题排查和异常处理升降配方式概述

  • 本页导读 (1)
  • 问题现象
  • 问题原因
  • 解决方案
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等