irpas技术客

ElasticSearch系列(七)es内存大小设置_m0_54850467_es内存配置多大合适

未知 3611

近期发现线上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集群即可。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #es内存配置多大合适 #1 #2查看es配置的内存大小使用 #PS #EF