CPU占用过高问题:scsi_eh_1进程占用超60%CPU
scsi_eh_1是SCSI设备的错误处理进程,高CPU占用基本都是某块SCSI存储设备(磁盘、外接U盘/硬盘等)出现连接异常、硬件故障或读写超时,导致进程反复尝试恢复设备。按以下步骤排查:
先抓取SCSI相关日志,定位异常设备:
执行dmesg | grep -i scsi或journalctl -k | grep -i scsi,查找包含"timeout"、"error"、"failed"的条目,这些内容会指向出问题的设备(比如/dev/sdb)。列出所有SCSI设备,对应日志信息核对:
用lsscsi命令输出所有SCSI设备列表,格式类似[0:0:0:0] disk ATA XXXXXXXX /dev/sda,结合日志里的设备编号排查。如果是外接设备,先拔掉试试,观察CPU占用是否回落。临时处理(需谨慎,会影响对应设备的使用):
找到异常设备对应的主机号(比如lsscsi里的第一个数字,如[2:0:0:0]的主机号是2),执行echo 1 > /sys/class/scsi_host/host2/scan重新扫描设备;如果无效,执行echo offline > /sys/block/sdb/device/state让设备离线,强制终止错误处理进程的重试循环。验证系统更新影响:
虽然你认为更新无关,但可以检查更新的内核包:先用dnf history找到最近的更新ID,再用dnf history info <更新ID>查看是否包含SCSI驱动相关更新。如果有,重启时在GRUB菜单选择旧内核启动,测试问题是否消失。硬件层面排查:
对可疑磁盘执行smartctl -a /dev/sdX查看SMART健康报告,确认是否存在坏道、读写错误;外接设备可以更换USB口或数据线测试,排除连接故障。
内容的提问来源于stack exchange,提问作者frz93

