今天发现生产环境上的 Java worker hung 住了 ( Java 进程还在,但是不再 process workload ) 。查日志发现了如下:
kernel: [2102264.976570] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kernel: [2102264.978678] jbd2/dm-0-8 D ffff8800b8a5fad8 0 1506 2 0x00000000
我的理解是 disk 挂了。
我有两个疑问:
- 为什么系统(和 Java Process ) 还在运行?(难道这不是 kernel panic ?)
- 我在 code 里通过 Future.get(timeout...) 设置了 timeout 为何没有生效?难道是因为 io block 所以挂起了线程? 这和我理解的 timeout 好像不太一样。
网上也没搜到什么答案。提的问题有点小白,还请各位 V2EX 大神们不吝赐教!