如何在Ubuntu虚拟机中仅关闭Cassandra 3.0的swap(非系统级)?
针对Cassandra单独禁用Swap的可行性及操作方法
当然可行啦!针对Cassandra 3.0单独禁用Swap而不影响Ubuntu虚拟机的系统级Swap是完全可以实现的——毕竟Cassandra官方本身就强烈建议避免Swap使用,以此保证集群的性能稳定性和响应速度。下面给你两种实用的操作方法:
方法一:永久生效(通过Cassandra配置实现)
这种方法会让Cassandra每次启动都自动禁用Swap,适合长期使用:
- 首先找到Cassandra的JVM配置文件
jvm.options,通常路径是/etc/cassandra/jvm.options(如果是自定义安装,就在你的安装目录下的conf文件夹里) - 打开文件后,添加或修改以下关键JVM参数,让Cassandra进程锁定内存,彻底避开Swap:
# 新增或确保以下参数存在 -XX:+LockAllMemory -XX:+UseLargePages - 注意:使用
-XX:+LockAllMemory需要给Cassandra用户分配足够的内存锁定权限,你需要编辑/etc/security/limits.conf文件,添加两行配置:cassandra soft memlock unlimited cassandra hard memlock unlimited - 保存所有修改后,重启Cassandra服务使配置生效:
# 如果用systemd管理服务 sudo systemctl restart cassandra # 或者用传统service命令 sudo service cassandra restart
方法二:临时生效(针对当前运行的Cassandra进程)
如果只是想临时测试禁用Swap的效果,不想修改配置或重启服务,可以用这个方法:
- 先找到Cassandra的进程ID(PID):
pgrep cassandra - 使用
prlimit命令修改该进程的Swap限制,直接将Swap配额设为0:sudo prlimit --swap=0:0 -p <你的Cassandra进程PID> - 注意:这个设置在Cassandra重启后会失效,仅对当前运行的进程有效
验证是否成功禁用Swap
操作完成后,你可以验证一下Cassandra进程是否真的不再使用Swap:
- 执行以下命令(替换
<PID>为你的Cassandra进程ID):cat /proc/<PID>/status | grep VmSwap - 如果输出显示
VmSwap: 0 kB,就说明已经成功禁用了该进程的Swap使用啦!
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

