linux - Linux 上的 Rebol 2 进程在 "day of heavy load"之后在 SIGTERM 处停止

标签 linux rebol rebol2 cheyenne

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

工作几天后,当 Rebol 工作进程应该退出时,该进程开始消耗 100% CPU 并且“不执行任何操作”。我用 strace 查看了进程,当它处于 100 个 CPU 时,它不会以任何方式调用操作系统。我查看了 Cheyenne 工作代码(如果那里有任何错误),代码对 Rebol 命令 exit 执行正常。该命令使其永远循环。如果我尝试使用 sigterm 终止该进程,情况也是一样。

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

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

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

最佳答案

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

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

您可以在 Docker 容器中使用它

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

希望有帮助。

关于linux - Linux 上的 Rebol 2 进程在 "day of heavy load"之后在 SIGTERM 处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881200/

相关文章:

rebol - 如何将密码与mysql ://protocol in Rebol?连接起来

Rebol 2 禁用控制台回声

email - 如何使用 Rebol 的 SEND 功能将地址添加到 BCC 字段?

python - 当 python2 native 时在 Linux 中安装 python3

有人可以解释一下 __declspec(naked) 吗?

pdf - 在 Rebol/Red 中创建 pdf 文件

rebol - 为什么不能在 Rebol 中覆盖内置函数?

rebol - 如何在 REBOL3 中打开/写入/读取端口?

linux - Debian 上的守护进程启动(存在于/sbin/service)

c - semop( ) 失败,错误号 4。semop() 是否支持进程内的线程竞争?