使用 actor 的计算密集型 scala 进程不合作地挂起

发布于 2024-10-09 16:07:12 字数 448 浏览 0 评论 0原文

我有一个计算密集型 scala 应用程序挂起。我所说的挂起是指它位于使用 1% CPU 的进程堆栈中,但不响应kill -QUIT,也不能通过 jdb Attach 连接。
在卡住之前以 800-900% CPU 运行 2-12 小时 该应用程序使用了大约 10 个 scala.actors。

到目前为止,我已经通过kill -QUIT 取得了巨大成功,但我对如何继续感到有点困惑。

参与者使用 println 向 stdout 写入相当多的内容,该 println 被重定向到文本文件,但到目前为止对诊断没有帮助。 我只是希望当kill -QUIT 失败时有一些我不知道的明显技术。 或者只是确认让多个参与者异步 println 是一个真正的坏主意(尽管我已经这样做很长时间了,直到最近才得到这些结果) 细节 scala 2.8.1 & 2.8.0 苹果系统 10.6.5 java版本“1.6.0_22”

谢谢

I have a computationally intensive scala application that hangs. By hangs I means it is sitting in the process stack using 1% CPU but does not respond to kill -QUIT nor can it be attached via jdb attach.
Runs 2-12 hours at 800-900% CPU before it gets stuck
The application is using ~10 scala.actors.

Until now I have had great success with kill -QUIT but I am bit stumped as to how to proceed.

The actors write a fair amount to stdout using println which is redirected to a text file but has not been helpful so far diagnostically.
I am just hoping there is some obvious technique when kill -QUIT fails that I am ignorant of.
Or just confirmation that having multiple actors println asynchronously is a real bad idea (though I've been doing it for a long time only recently with these results)
Details
scala 2.8.1 & 2.8.0
mac osx 10.6.5
java version "1.6.0_22"

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

你的他你的她 2024-10-16 16:07:13

如果您只是想从运行队列中删除该进程,那么显而易见的选择是

kill -9

当然您想避免首先这样做,但您没有提供任何信息来让我们帮助您。在多个参与者中写入标准输出确实是一个坏主意,但最糟糕的事情可能是输出乱码。

if you just wanna remove the process from the run queue, the obvious choice is

kill -9

Of course you wanna avoid having to do that in the first place, but you do not provide any information that would allow us to help you with that. Writing to stdout in multiple actors is indeed a bad idea, but the worst thing that could come from that is garbled output.

吻泪 2024-10-16 16:07:13

大多数时候,我看到 JVM 的反应就像它进入无永久代空间时那样。然后它将无能为力(甚至死亡)。您在打印输出中没有发现任何痕迹吗?您是否尝试过增加永久空间?

Most times I have seen the JVM react like that is when it goes into no permgen space. It will then be incapable of anything (even dying). You don't find any traces of that in your printout? Have you tried to increase the permgen space?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文