首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个过程过了一段时间后不会死掉?

为什么这个过程过了一段时间后不会死掉?
EN

Unix & Linux用户
提问于 2015-04-13 17:12:17
回答 3查看 4.4K关注 0票数 7

我有一个过程似乎被挂起来了。

当我尝试重新启动进程时,我会得到一个超时。

代码语言:javascript
运行
复制
service logstash_server stop
timeout: run: logstash_server: (pid 11797) 839061s, want down, got TERM

我尝试在日志上运行一个tail -f,不幸的是,它没有显示任何内容。我也在这个过程中尝试过一个kill -15,但是它仍然是挂起的。Top不显示这是一个僵尸进程。

我想弄清楚为什么这个过程是在这个状态,因为这是第三次发生在过去的一个月。

我检查了文件描述符和syslog,但是没有看到任何明显的东西。

文件描述符=> http://pastebin.com/90rDHhT4

syslog输出=> http://pastebin.com/xBaMaL9Z

lsof | grep logstash => http://pastebin.com/gsSdPyg5的输出

我试着在这个过程中运行一个strace,它只显示了FUTEX_WAIT

代码语言:javascript
运行
复制
strace -p 11797
Process 11797 attached
futex(0x7f6d95d8e9d0, FUTEX_WAIT, 11811, NULL

在发布kill -9之前,我还能做些什么吗?

更新

和开发商一起开的票。问题继续大约每周一次。

https://github.com/elastic/logstash/issues/2992

EN

回答 3

Unix & Linux用户

发布于 2015-04-13 17:29:45

有几个工具可以诊断这样的事情:

  1. lsof。列出打开的文件,您可以看到,例如,其中一个位于挂起的网络共享上。或者等待TCP连接。等。
  2. strace。看看它挂的是什么,或者它是否真的在做什么。
  3. 守护进程具有的任何调试日志记录选项。但是,通常情况下,您必须在其崩溃之前(通常在启动时)打开这些。
  4. 软件调试工具(比如线程转储rahul提到的、gdbjdb或其他可能相关的东西)。您现在正在进行软件调试,但最终可能需要这样做才能找到原因。

lsofstrace基本上是要对系统/配置中出现故障的东西进行反复检查。除此之外,你真的需要软件开发人员的帮助。

编辑:从您的更新中,您很可能需要报告bug或请求作者的帮助(S)。除非你身边有一个开发人员,否则你可以看看它。

票数 5
EN

Unix & Linux用户

发布于 2015-04-17 22:30:43

进程状态D(“不间断睡眠”)最有可能是无法被终止的进程(即使使用SIGKILL,甚至是根进程)。如果这种情况没有明显的原因而持续存在,那么您的程序肯定在某些I/O驱动程序中触发了一个错误。实际上,除了重新启动之外,您什么也做不了。

票数 2
EN

Unix & Linux用户

发布于 2015-04-16 01:41:40

这可能会有一些帮助- http://man7.org/linux/man-pages/man2/futex.2.html

同意这可能是一个错误,应该交给开发人员。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/195998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档