【问题标题】:Rebol 2 process on Linux halts on SIGTERM after a "day of heavy load"Linux 上的 Rebol 2 进程在“繁重的一天”之后在 SIGTERM 上停止
【发布时间】:2017-01-26 19:16:10
【问题描述】:

我将 Cheyenne 用于负载相对较高的 Web 应用程序。它工作得很好而且很快。但是我有一个问题在升级到 Ubuntu 14.04 后开始出现,或者我开始注意到它,因为负载增加了。

工作几天后,当 Rebol 工作进程应该退出时,该进程开始消耗 100% 的 CPU 并且“什么都不做”。我用 strace 查看了进程,当它在 100 个 CPU 中时,它不会以任何方式调用操作系统。我查看了 Cheyenne worker 代码(如果那里有任何错误),代码执行 OK 到 Rebol 命令 exit。这个命令使它永远循环。如果我尝试用 sigterm 终止进程,情况也是如此。

然后我可以用 sigkill 杀死它。该过程仅在几天的繁重负载后才进入此状态,并且我无法在非生产环境或本地计算机上复制它。

我天真的想法是它会永远循环,同时试图在退出之前清除它的内存,或者可能是打开的文件/套接字。我用 lsof (和类似的)查看了之前/之后的过程,但由于该事件不容易重现,所以没有想出任何答案。

我的问题是:有没有人看到 Rebol2 在退出时进入永恒的 100% 循环,在什么情况下?有人知道解决这个问题吗?

【问题讨论】:

  • 恐怕这不会是一个有用的评论,但这里是。我还在 Ubuntu 14.04 上使用 Cheyenne(准确地说:14.04.5 LTS(GNU /Linux 3.13.0-92-generic x86_64) 并且我从未见过这个问题。在 Ubuntu 16.04 和 Mac OSX 10.9 上也是如此。应该注意的是,这些从未承受过重负载,但运行时间很长(某些情况下6-9 个月无需重启)。

标签: linux rebol rebol2 cheyenne


【解决方案1】:

我在我们的生产 cheyenne 服务器上看到了这种情况,100% 的 cpu 没有响应,可能是在提供了一个很长的文件(响应中有很多数据)之后......从来没有找到时间来诊断更多这个问题,结束在 go 中编写一个监视器,该监视器会在太长时间内杀死 100% cpu 进程。

https://github.com/Softinnov/bearded-monitor

你可以在 docker 容器中使用它

https://hub.docker.com/r/softinnov/bearded-monitor/

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 2018-08-10
    • 1970-01-01
    • 2010-10-20
    • 2013-07-11
    • 2017-03-25
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多