调整OpenVZ Containers以更好地使用Java?

我有一个8 GB的RAM服务器(专用),目前有KVM虚拟机在那里运行(成功),但我正在考虑转移到OpenVZ作为KVM似乎有点矫枉过正,我用它的很多开销。

在过去,我使用OpenVZ Containers,由我自己和其他提供商托pipe,Java似乎不能很好地与他们..一个例子是,如果我给一个容器2 GB的RAM(没有爆发)(有或没有vswap无关紧要),一个java实例只能被调优使用该RAM的最大1500MB(-Xmx,-Xms)。

理想情况下,我希望能够创build大约256MB,512MB,768 RAM的“迷你”容器,并在其中运行一些Java实例。

我的问题是:我试图find一个理想的方法来调整OpenVZ容器configuration,以便更好地使用Java内存

请不要build议任何与Java设置相关的东西,我正在寻找OpenVZ的具体答案..虽然我欢迎任何build议,如果你觉得它可以帮助我。

非常感谢Daniel

你必须使用RHEL6(aka 2.6.32-,又名042stab)内核,并用VSwap来configuration你的容器。 有关更多详细信息,请参阅http://openvz.org/VSwap 。 在新的安装中默认是这样做的。

如果你想要迷你容器,分配你需要的RAM,然后分配两倍的交换量,为CT存储器启用一些“拉伸”。 例如,对于256M将是

vzctl set $ CTID –ram 256M –swap 1G –save

确保其他beancounters(特别是privvmpages)设置为无限。 再次请参阅http://openvz.org/VSwap了解更多详情。

为什么排除java设置,如果这个问题可能只是误解-Xmx选项?

我会考虑2 GB或RAM为1.5 GB的堆是一个正确的大小。 堆只是JVM使用的内存的一部分。 本机代码包括JVM代码本身,本地库使用的内存,代码caching,基于堆栈的内存(每个线程都有自己的堆栈)以及永久代都存储在堆外部。