logstash报错:Error: Your application used more memory than the safety cap of 1G

问题来源
  logstash在数据量少的情况下,是正常抽取数据的,但当多台服务器一起启动logstash去抽取大量数据的时候,logstash就会出现Your application used more memory than the safety cap of 1G的问题,进而抽取程序就停掉了;

问题说明
  从报错的提示来看,很明显就是内存溢出的问题(logstash的默认服务分配内存的1g),数据抽取缓存堆积太多,导致原本分配的堆内存空间不足,需要扩大服务的内存空间以解决内存溢出的问题;

解决方法
在logstash5.X版本以前,可以直接修改logstash的配置文件logstash.lib.sh,它的文件路径:/opt/logstash/bin; 
修改内容: 
LS_HEAP_SIZE=”${LS_HEAP_SIZE:=1g}” 
将其中的1g修改成32g,扩大es处理服务空间,修改之后的文件如下: 
LS_HEAP_SIZE=”${LS_HEAP_SIZE:=32g}”
在logstash5.X版本之后,修改的方式有所变动,需要修改es的配置文件,而不是logstash配置文件; 
修改方式: 
在es的bin目录下,找到elasticsearch启动文件,在头部新增命令语句:export ES_HEAP_SIZE=32g 
说明: 
ES_HEAP_SIZE的大小可根据生产环境的大小进行修改,一般不超过32g;
新问题出现
  当在elasticsearch设置了32g的分配内存之后,启动的时候发现又报错了,以下就是报错的内容: 
  1. Error: encountered environment variables that are no longer supported 
  2. Use jvm.options or ES_JAVA_OPTS to configure the JVM 
  3. ES_HEAP_SIZE=32g: set -Xms32g and -Xmx16g in jvm.options or add “-Xms32g -Xmx32g” to ES_JAVA_OPTS 
  解决方式: 
  从报错的提示来看,jvm里面没有16g的配置,所以提供了两种方式去修改: 
 1. 修改config目录下的jvm.options文件,修改配置:-Xms32g -Xmx32g 
 2. 直接在elasticsearch启动文件里面添加配置:ES_JAVA_OPTS=”-Xms32g -Xmx32g” 
 如果第一种修改方式不起作用,可选择第二种进行修改;

解决结果
  修改成功上面的配置之后,重新启动es,然后多台服务器一起去运行logstash导入数据的时候,再也没有出现那些奇葩的问题了,perfect,希望对有遇到这些问题的程序猿有所帮助~
--------------------- 

原文:https://blog.csdn.net/alan_liuyue/article/details/78976755 
 

猜你喜欢

转载自blog.csdn.net/qq_15783243/article/details/83651208
今日推荐