现在我在具有24个内核和64G内存的群集上同时运行jar的多个实例(用scala编写的代码),Ubuntu 11.04 (GNU/Linux 2.6.38-15-generic x86_64)
。我观察到大量内存使用的问题,这与我运行的实例数量是超线性的。更具体地说,这就是我正在做的事情
screen
打开新的屏幕会话。java -cp myjar.jar main.scala.MyClass
我观察到的是,当我只运行7个实例时,使用大约10G内存,一切都很好。现在我运行了14个实例。内存很快被占用,所有64G都被占用,然后机器显着减速甚至很难登录。通过htop
监控机器,我可以看到只有少数内核正在运行时间。任何人都可以告诉我我的程序发生了什么以及如何解决它,以便我能够有效地使用计算资源?谢谢!
答案 0 :(得分:1)
要有效地使用计算资源,您必须启动一个jar
,它在一个JVM中启动多个线程。如果启动相同jar
的14个实例,则会运行14个隔离的JVM。
答案 1 :(得分:0)
如果在解决了这个问题之后,你完全喜欢这些类似shell的工具(就像我一样),请查看完整的java troubleshooting tools列表 - 它会为你节省很多时间,所以你可以提前去酒吧而不是迟到和调试内存/ CPU问题