ElasticSearch之禁用交换分区
操作系统将进程加载至内存中执行时,对于当前未使用到的内存页,可能会将相关内存页交换至硬盘上,即swap
。
对于性能敏感、时延敏感的应用程序比如ElasticSearch
,swap
特性会明显影响性能和稳定性,因此最好禁用swap
特性。
对于Linux
环境,目前有如下手段可以禁用swap
特性。
临时关闭swap
的方法,执行如下命令:
sudo swapoff -a
本方法不需要重启Linux
系统,但系统重启后即失效。
修改/etc/fstab
,去掉包含swap
的行,这样系统重启后,就不会自动挂载swap
相关的分区。
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda8 during installation UUID=124a4216-e11f-4dfb-9884-ea53ee46c8d8 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda9 during installation UUID=317d9a34-6d00-4278-bcaa-bcb3b37fc58c none swap sw 0 0
修改vm.swappiness
的值为1
,可以极大的降低进程的内存页被交换至硬盘的概率。
查看Linux
系统当前vm.swappiness
的值,执行如下命令:
cat /proc/sys/vm/swappiness
输出如下:
20
或者执行如下命令:
sysctl vm.swappiness
输出如下:
vm.swappiness = 20
修改vm.swappiness
的值,执行如下命令:
sudo sysctl -w vm.swappiness=30
输出如下:
vm.swappiness = 30
利用Linux
系统的mlockall
方法,禁止将内存页交换至硬盘。
修改ElasticSearch
的配置文件elasticsearch.yml
,增加如下参数:
bootstrap.memory_lock: true
修改后需要重启ElasticSearch
进程。
检查mlockall
是否生效,执行如下命令:
curl -X GET "https://localhost:9200/_nodes?filter_path=**.mlockall&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPH=QBE+s5=*lo7F9"
执行结果的样例,如下:
{ "nodes" : { "aKgBu7LgS9a6iPYH8n2JPw" : { "process" : { "mlockall" : false } } } }
mlockall
为true
,说明增加参数后,mlockall
如预期生效。
mlockall
为false
,说明增加参数后,mlockall
未能生效,原因则可能是运行ElasticSearch
的用户缺少锁定内存的权限。
检查当前用户的权限,执行如下命令:
sudo sh -c "ulimit -a"
执行结果的样例,如下:
time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) 8192 coredump(blocks) 0 memory(kbytes) unlimited locked memory(kbytes) 65536 process 15172 nofiles 1024 vmemory(kbytes) unlimited locks unlimited rtprio 0
假如判定和权限相关,则有如下解决方法。
在启动ElasticSearch
前,使用root
用户增加权限,命令样例如下:
ulimit -l unlimited ./bin/elasticsearch
或者修改/etc/security/limits.conf
,增加如下配置。
# allow user 'elasticsearch' mlockall elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited
相关资料
本文来自博客园,作者:jackieathome,转载请注明原文链接:https://www.cnblogs.com/jackieathome/p/17855035.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南