报错:rwsem_down_failed_common

2021-05-26  本文已影响0人  yangqing

报错信息如下:

Dec  8 20:12:43 dzyx-DataNode1 kernel:      Tainted: G           ---------------  T 2.6.32-431.20.3.el6.x86_64 #1
Dec  8 20:12:43 dzyx-DataNode1 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Dec  8 20:12:43 dzyx-DataNode1 kernel: java          D 0000000000000017     0  4929   3801 0x00000000
Dec  8 20:12:43 dzyx-DataNode1 kernel: ffff881059633cf0 0000000000000082 0000000000000000 0000000159633ca8
Dec  8 20:12:43 dzyx-DataNode1 kernel: ffffffff81ed63d8 0000010000000005 ffff881059633f38 ffffffff6ed16000
Dec  8 20:12:43 dzyx-DataNode1 kernel: ffff881059fdc638 ffff881059633fd8 000000000000fbc8 ffff881059fdc638
Dec  8 20:12:43 dzyx-DataNode1 kernel: Call Trace:
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8152aea5>] rwsem_down_failed_common+0x95/0x1d0
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8152b036>] rwsem_down_read_failed+0x26/0x30
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8128f1e4>] call_rwsem_down_read_failed+0x14/0x30
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8152a534>] ? down_read+0x24/0x30
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8104a92e>] __do_page_fault+0x18e/0x480
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff810097cc>] ? __switch_to+0x1ac/0x320
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8100bb8e>] ? apic_timer_interrupt+0xe/0x20
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8152e37e>] do_page_fault+0x3e/0xa0
Dec  8 20:12:43 dzyx-DataNode1 kernel: [<ffffffff8152b735>] page_fault+0x25/0x30
Dec  8 20:12:43 dzyx-DataNode1 kernel: INFO: task java:23818 blocked for more than 120 seconds.

日志分析和解决办法:

系统默认可用内存作为文件系统缓存,当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘,导致后续的IO请求都是同步的。

对内核参数调优,解决办法如下:

vim /etc/sysctl.conf 
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

这个vm.dirty_background_ratio值达到后触发flush进程进行异步的回写操作,此时应用进程仍可写,如果多个应用进程写入的量大于flush进程刷出的量那自然会达到vm.dirty_ratio的值,此时OS系统会转入同步地处理脏页的过程,阻塞应用进程。

上一篇下一篇

猜你喜欢

热点阅读