博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch内存优化设置
阅读量:7108 次
发布时间:2019-06-28

本文共 1155 字,大约阅读时间需要 3 分钟。

1、禁用交换分区

  最简单的选项是完全禁用交换,通常elasticsearch是在框上运行的唯一服务,内存由ES_HEAP_SIZE环境变量控制,设有必要启用交换分区

  linux:swapoff -a 关闭交换分区

     永久禁用:编辑/etc/fstab注释掉任何包含单词swap的行

  windows:系统属性 -> 高级 -> 性能 -> 高级 -> 虚拟内存

      完全禁用分页文件可以实现相同的功能

2、swappines配置

  确保sysctl值vm.swappiness设置为0。这减少了内核交换的趋势,并且不应该导致在正常情况下交换,同时仍允许整个系统在紧急情况下交换

  注意:内核版本3.5-rcl及以上版本,swappiness为0会导致OOM杀手杀死进程,而不允许交换,将swappiness设置为1,以便仍然允许在紧急情况下交换

3、mlockall

  在linux系统上使用mlockall,或者在windows上使用virtualLock,以尝试将进程地址空间锁定到RAM,防止任何Elasticsearch内存被交换出来,可以添加到配置文件中,

  bootstrap.mlockall:true

  启动elasticsearch后,可以通过检查此请求的输出中mlockall的值来查看此设置是否已经成功应用:curl http://localhost:9200/_nodes/process?pretty

  如果你看到mlockall是false,那么意味着mlockall请求失败,在linux/unix系统上最可能的原因是,运行elasticsearch的用户没有锁定内存的权限,这可能通过在启动elaticsearch之前以root身份运行ulimit -l unlimited来授予

  mlockall可能失败的另一个原因是临时目录(通常为/tmp)使用noexec选项加载

  这可以通过指定一个新的临时目录,通过启动elasticsearch来解决

  /bin/elasticsearch -Djna tmpdir=/path/to/new/dir

  注意:如果他试图分配的内存超过可用,mlockall可能会导致JVM或shell会话退出

 

Java虚拟机规范中描述了两种异常

  1、如果线程请求的站深度大于虚拟机所允许的最大深度,将抛出StackOverflow Error异常,logstash的hs_err_pid4944

  2、如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutofMemary Error异常

 

转载于:https://www.cnblogs.com/qfdxxdr/p/8336710.html

你可能感兴趣的文章
MVC之前的那点事儿系列(1):进入CLR
查看>>
Codeforces Round #174 (Div. 1) B. Cow Program(dp + 记忆化)
查看>>
如何清除SQL Server Management Studio的最近服务器列表
查看>>
在MVVM模式中,按钮Click事件的绑定方法
查看>>
acd The Game about KILL(和约瑟夫归则一样,归律)
查看>>
转载 WebBrowser介绍——Javascript与C++互操作
查看>>
使用MAVEN打JAR,直接使用
查看>>
给电信专业大二学生解答几个问题
查看>>
libguestfs手册(1): 架构
查看>>
iTextSharp快速使用指南
查看>>
C语言(1+1+2+1+2+3....+n)
查看>>
浅谈 js 字符串 search 方法
查看>>
WPF设置样式的几种方式
查看>>
activity的onCreate参数 saveInstanceState
查看>>
css调整图片位置布局
查看>>
华为的JAVA面试题及答案(部分)
查看>>
定时关机命令——shutdown
查看>>
基于Java的数据采集(三)
查看>>
【编程题目】最长公共字串
查看>>
lucene 专业名词作用整理
查看>>