Linux运维22:应用或命令卡住问题跟踪方法
Posted YoungerChina
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维22:应用或命令卡住问题跟踪方法相关的知识,希望对你有一定的参考价值。
在Linux系统使用过程中,可能由于某种原因导致某个应用或者命令卡住,并处于D+状态。对于这种问题,要进行初步定为和分析,为后面的研发人员分析和解决问题,提供帮助。本文将将此类问题的排查的方法和思路分享给各位,希望对您有所帮助。
1. 问题描述:
命令行执行“df -h”卡住,无法退出,如下图:
2. 问题跟踪:
1. 查看线程状态
当前df线程(pid=2468)处于D+状态,即不可打断的睡眠状态,所以是无法杀死的。
2. 查看问题线程堆栈cat /proc/<pid>/stack
[root@devvm ~]# cat /proc/2468/stack
[<ffffffffc09bafe4>] rpc_wait_bit_killable+0x24/0xb0 [sunrpc]
[<ffffffffc09bd284>] __rpc_execute+0x154/0x420 [sunrpc]
[<ffffffffc09bfa48>] rpc_execute+0x68/0xc0 [sunrpc]
[<ffffffffc09ae7e6>] rpc_run_task+0xf6/0x150 [sunrpc]
[<ffffffffc09ae950>] rpc_call_sync+0x50/0xc0 [sunrpc]
[<ffffffffc0b0c72e>] nfs3_rpc_wrapper.constprop.11+0x6e/0xb0 [nfsv3]
[<ffffffffc0b0d406>] nfs3_proc_getattr+0x56/0xb0 [nfsv3]
[<ffffffffc0a336e8>] __nfs_revalidate_inode+0xd8/0x350 [nfs]
[<ffffffffc0a33d45>] nfs_getattr+0x95/0x250 [nfs]
[<ffffffffbde534a9>] vfs_getattr+0x49/0x80
[<ffffffffbde535d5>] vfs_fstatat+0x75/0xc0
[<ffffffffbde5397e>] SYSC_newstat+0x2e/0x60
[<ffffffffbde53e3e>] SyS_newstat+0xe/0x10
[<ffffffffbe393f92>] system_call_fastpath+0x25/0x2a
[<ffffffffffffffff>] 0xffffffffffffffff
[root@devvm ~]#
df线程明显是卡在等待nfs的rpc答复过程中。
3. 通过mount查看系统挂载的nfs共享目录
说明,此时只能通过mount命令查看,df会卡住。
检查与nfs服务器的网络连通性如何。
由此可知,是网络导致df获取nfs共享目录状态时卡住。
3. 解决问题
1. 修复网络
通过网络运维等手段,修复网络,使之连通性恢复正常
2. 查看df结果
df线程恢复正常,并返回结果
所有线程或命令卡住的追踪思路大致均如此。
以上是关于Linux运维22:应用或命令卡住问题跟踪方法的主要内容,如果未能解决你的问题,请参考以下文章