ELK数据抽取工具logstash报错:Your application used more memory than the safety cap of 1G

版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/78976755

问题来源

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

问题说明

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

解决方法

  1. 在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}”
  2. 在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,希望对有遇到这些问题的程序猿有所帮助~

上一篇:台积电全面复工 称地震对本季度芯片出货量影响不超过1%


下一篇:阿里云物联网应用开发工具IoT Studio用户数突破10万 低代码开发获追捧