Вычислительно интенсивный процесс скала с использованием акторов зависает - PullRequest
2 голосов
/ 02 января 2011

У меня есть вычислительное приложение Scala, которое зависает.Под зависаниями я подразумеваю, что он находится в стеке процессов с использованием 1% ЦП, но не отвечает на kill -QUIT, и при этом он не может быть присоединен через jdb attach.
Работает 2-12 часов при 800-900% ЦП, прежде чем он застрянетПриложение использует ~ 10 scala.actors.

До сих пор у меня был большой успех с kill -QUIT, но я немного озадачен тем, как поступить.

Актеры записывают значительную сумму в стандартный вывод, используя println, который перенаправляется в текстовый файл, но до сих пор не помогал в диагностике.Я просто надеюсь, что когда kill -QUIT терпит неудачу, есть какая-то очевидная техника, о которой я не знаю.Или просто подтверждение того, что асинхронная печать нескольких действующих лиц является очень плохой идеей (хотя я делал это в течение длительного времени только с этими результатами) Подробности scala 2.8.1 и 2.8.0 mac osx 10.6.5 java версия "1.6.0_22 "

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 января 2011

В большинстве случаев я видел, как JVM реагирует так, как будто он не входит в постоянное пространство.Тогда он не сможет ни на что (даже умереть).Вы не нашли никаких следов этого в вашей распечатке?Вы пытались увеличить пространство permgen?

0 голосов
/ 02 января 2011

Если вы просто хотите удалить процесс из очереди выполнения, очевидным выбором будет

kill -9

Конечно, вы, во-первых, не хотите этого делать, но не предоставляете никакойпозволит нам помочь вам с этим.Писать в stdout несколькими актерами - это действительно плохая идея, но худшее, что может из этого получиться, - искаженный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...