没有进程可以在"完全"交换中执行.必须将代码+数据加载到RAM中,以便CPU读/写/执行它.你可以把东西暂时推出去交换,但是如果你的驻留设置太小,你的系统会不断交换.(即使使用SSD,从磁盘加载比从RAM加载要慢几千倍.)
这种不断的交换将:
1)减慢整个系统的速度,因为磁盘的一些I/O带宽会被不断使用
2)缩短SSD的使用寿命,因为SSD在出现故障之前具有有限的写入周期.
您最好的选择就是创建一个大的交换区域,并正常运行您的程序.操作系统会将不经常使用的位移出磁盘.如果你无法在系统的其余部分获得良好的性能,那么你需要更多的RAM.您可以尝试使用ulimit和/或cgroups来限制进程使用的RAM量,但这不能"修复"您的问题.
或者,您可以使用更有效的语言重新编写服务器.(这是一个常见的权衡:程序员可能花费数月优化运行时CPU /内存占用,或者业务可能会花更多钱在硬件上.)