【问题标题】:Rhino command line execution gets killed - what could be the reason / how to debugRhino 命令行执行被杀死 - 可能是什么原因/如何调试
【发布时间】:2013-01-02 02:18:42
【问题描述】:

我们有一个带有 Rhino + Envjs 和运行 Ubuntu 的 CI 服务器的 Javascript 测试设置。我们正在使用以下命令行运行我们的测试:

java -cp ext/js.jar:ext/jline.jar org.mozilla.javascript.tools.shell.Main -opt -1 -f run.js

现在我们出乎意料地遇到了以下问题:测试运行停止,只打印以下内容:

[  Envjs/1.6 (Rhino; U; Linux amd64 3.2.0-33-generic; en-US; rv:1.7.0.rc2) Resig/20070309 PilotFish/1.2.13  ]
Killed

在另一台计算机 (Mac) 上,相同的测试顺利通过。我尝试了调试开关-debug 和Java 内存大小-Xmx1024m,但这些都没有帮助。

注意:这次重启服务器解决了问题。

更新:几天后,今天发生了几次,但是后续构建成功了。

更新 2:这似乎不时发生,有时也在测试成功运行后发生。

这可能只是一个案例,但是如果再次发生这种情况,您是否知道可能是什么原因或如何调试 Rhino?

br,图子

【问题讨论】:

    标签: javascript command-line rhino envjs


    【解决方案1】:

    “Killed”表示进程被外部信号终止。常见情况有:

    • 有人使用了错误的进程 ID 的 kill
    • 安装了一个系统资源监视器,它会终止占用过多资源的进程。在 Linux 上,使用 ulimit 并询问您的系统管理员。
    • 您的操作系统在无法让 Java 知道错误的地方出现内存不足(即,当操作系统本身需要内存来完成 Java VM 的 I/O 操作时,就会发生这种情况)。

    【讨论】:

    • 在我们的虚拟服务器上,ulimit 是“无限的”,但这可能与内存问题有关。为我们的虚拟服务器添加了内存,让我们看看以后问题是否仍然存在。
    • :-/ 如果 Java 无法从操作系统获得更多内存,您应该得到 OutOfMemoryError。您检查系统日志是否有错误?
    • 检查 /var/log/syslog ,多次发现以下信息:“...内存不足:杀死进程934(java)得分337或牺牲孩子”,“...杀死进程 934 (java) total-vm:1969140kB, anon-rss:695888kB, file-rss:0kB"。不过,Java 没有显示任何错误/异常,只有“已杀死”。
    • 在这种情况下,操作系统由于某种原因耗尽了内存,然后停止了 Java VM,没有给它处理错误的机会。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2018-10-31
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多