0

现在,我在具有 24 个内核和 64G 内存的集群上同时运行多个 jar 实例(用 scala 编写的代码)Ubuntu 11.04 (GNU/Linux 2.6.38-15-generic x86_64),. 我观察到内存使用量过大的问题,这与我运行的实例数量呈超线性关系。更具体地说,这就是我正在做的事情

  1. 在 scala 中编写代码并使用 sbt 打包到 jar 中。
  2. 登录集群,用于screen打开一个新的屏幕会话。
  3. 在此屏幕中打开多个窗口。
  4. 在每个窗口中,运行java -cp myjar.jar main.scala.MyClass

我观察到的是,假设我只运行 7 个实例时,使用了大约 10G 内存,一切都很好。现在我运行 14 个实例。内存很快就被吃光了,64G都被占满了,然后机器急剧变慢,甚至登录都很难。通过监控机器htop,我可以看到一次只有几个核心在运行。谁能告诉我我的程序发生了什么以及如何修复它以便我能够有效地使用计算资源?谢谢!

4

2 回答 2

1

为了有效地使用计算资源,您必须启动一个jar在一个 JVM 中启动多个线程的系统。如果您启动 14 个相同的实例jar,您将运行 14 个独立的 JVM。

于 2013-03-26T08:06:34.587 回答
0

如果在解决了这个问题之后你完全喜欢这些 shell 之类的工具(就像我一样)通过完整的java 故障排除工具列表- 它会为你节省很多时间,这样你就可以早点去酒吧,而不是迟到和调试内存/cpu问题

于 2013-03-26T08:50:57.920 回答