ElasticSearch系列(七)es内存大小设置

近期发现线上es服务内存告警,使用率超过90%,需要处理,下面记录下处理流程。

1. 查看进程内存占用情况

使用top命名,可以显示进程列表,
然后键盘按下M键,可以按照内存降序,结果如下:
在这里插入图片描述
elastic+就是es的进程。

2.查看es配置的内存大小

使用 ps -ef | grep java (或者按照上面的进程号找),显示java进程,如下是es进程:
在这里插入图片描述
可以看到es进程启动时设置的java堆内存为-Xms5g -Xmx-5g,也就是5g,这两个参数一般建议设置成一样。
修改之前,这里设置的是6g,物理总内存为8g,所以光es进程就占用了75%;有个疑问是,75%而已,为什么实际使用内存到了90%呢?服务器上也没有安装其他占用内存较大的服务。
原因:这是因为,es内核使用lucene,lucene本身是单独占用内存的,并且占用的还不少,官方建议设置es内存,大小为物理内存的一半,剩下的一半留给lucene

由此看来,之前线上把es内存设置为6g(物理内存8g)并不合理,修改为4g比较合适。

另外,es官方提了api查询集群各个节点的状态,比如 GET /_cat/nodes ,

http://localhosts:9002/_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used_percent,heap.current,heap.percent,heap.max,ram.current,ram.percent,ram.max,master

详见官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodes.html

3.如何修改es内存

有网上说,设置es内存的方法为:
设置环境变量:export ES_HEAP_SIZE=4g
或者,在程序启动的时候把内存大小传递给它:/bin/elasticsearch -Xmx4g -Xms4g ;
但是我实际操作后,发现并没有生效,可能是es版本的原因吧,我目前线上使用的es版本为5.6.4。

正确设置内存的方式:修改jvm.options文件
此文件一般在安装目录下,或者使用 whereis elasticsearch 命令,列出es相关的文件路径,都找一找。

打开此文件,其中有如下内容:
在这里插入图片描述
上面默认是注释掉的,默认使用1g内存;我们线上设置了6g,现在我们修改为4g,重启es集群即可。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值