我没有find解决scheme,所以我不知道,有没有。
我有一个VPS,512MB内存和SSD磁盘。
我的问题是:我想运行一个基于Java的服务器程序,我希望它完全采取交换。 它现在-Xms 384,但这还不够。
有没有解决办法?
PS:swappiness是60.我不想在RAM中看到这个过程:-)
没有进程可以在“完全”交换中执行。 必须将代码+数据加载到RAM中供CPU读/写/执行。 你可以暂时把东西推出来交换,但是如果你的居民集合太小,你的系统就会不断的交换。 (即使使用SSD,从磁盘加载的速度也要比从RAM加载数千倍)。
这种不断的交换将会:
1)减慢你的整个系统,因为你的磁盘的一些I / O带宽不断被使用
2)降低SSD的使用寿命,因为SSD在坏掉之前的写周期数量是有限的。
你最好的选择就是创建一个大的交换区域,并且正常运行你的程序。 操作系统将把不常用的位移出到磁盘。 如果在系统的其他部分无法获得良好的性能,则需要更多的RAM。 您可以尝试使用ulimit和/或cgroups来限制进程使用的RAM数量,但这不能“修复”您的问题。
或者,您可以用更高效的语言重新编写服务器。 (这是一个普通的权衡:程序员可能花费数月时间来优化运行时CPU /内存占用,或者企业可能花更多的钱在硬件上。)
cgroups
可能会为你工作。 您可以应用内存限制,一旦进程达到限制,它将开始交换。
这里有一个小例子和解释。