https://yq.aliyun.com/articles/241161

filebeat作为日志采集agent, 是需要部署到生产服务器上的.不理解filebeat的工作机制,不了解filebeat在实际生产使用中的内存使用将会给你带来意想不到的麻烦.

有些文章说filebeat内存消耗很少,不会超过100M, 这简直是不负责任的胡说,假如带着这样的认识把filebeat部署到生产服务器上就等着哭吧.

filebeat在空载情况(没有日志可采集)下的确不会有大的内存开销,但在有大量的日志需要采集时,filebeat的内存占用是没有固定值的, 那有没有理论值呢?答案是有, 为啥这么说,看下面公式:

bytes_each_log * spool_size * M + a*N

其中, bytes_each_log是单条日志大小, spool_size是配置文件里配置项,  M是单条日志在内存里的溢价系数(>1), N表示采集的文件个数,a为常数.

spool_size的默认值是2048, 好多人估计都不会配置这个项,也会因此埋下祸根(OOM):

10MB为filebeat支持的单条日志最大长度,超过的将会被截断丢弃

假设忽略a*N部分的内存开销, 单条日志的内存溢价为3, 一旦出现单条日志大于50KB且有瞬间爆发量的时候, filebeat的内存占用将大于300MB,是不是有点吓人!如果出现了极端情况,单条日志>10M,即使filebeat会截断到10M那也是20GB!!是不是腿都软了!!!

filebeat在实际使用过程中内存>300M,甚至15GB的情况浣熊都遇到过, 内存超过300M几乎经常遇到,基本都是因为客户没有按照吩咐的去做导致的; 15GB的那次有点意外和惊喜, 客户在自己的日志文件里打了大量的二进制文件(后来知道真相的我眼泪掉下来...), 大量的二进制文件触发了10MB规则,还好吃掉15GB内存后filebeat因OOM退出了,没有带来严重的损失.

那怎么样才能避免以上内存灾难呢?划重点了,快快拿出小本本记录:

(1)每个日志生产环境生产的日志大小,爆发量都不一样, 要根据自己的日志特点设定合适的spool_size值;什么叫合适,至少能避免内存>200MB的灾难;

(2)在不知道日志实际情况(单条大小,爆发量), 务必把spool_size设置上,建议128或者256;

最后分享张实践图片:

单条日志为45KB, spool_size为2048的内存开销,陡坡下是spool_size调整为128的效果.

filebeat实践-内存占用-最大内存占用相关推荐

  1. 深度学习 占用gpu内存 使用率为0_你了解GPU吗?为什么说深度学习需要GPU?

    任何试图大规模推广训练模型性能的数据科学家或机器学习爱好者都将在某个时候达到顶峰,并开始经历不同程度的处理滞后.当数据集变得更大时,使用较小的训练集花费数分钟的任务现在可能需要花费更多的时间(在某些情 ...

  2. 内存对齐 | 原来字段顺序还能影响结构体占用的内存空间

    大家好啊,不知道看了网管在上周的文章Go指针的使用限制和unsafe.Pointer突破之路,你们有没有感觉Golang 比之前想的还好用呢?确实能直接读写内存,很多以前觉得无能为力的事情就不再是问题 ...

  3. Android中一张图片占用的内存大小

    最近面试过程中发现对Android中一些知识有些模棱两可,之前总是看别人的总结,自己没去实践过,这两天对个别问题进行专门研究 探讨:如何计算Android中一张图片占据内存的大小 解释:此处说的占据内 ...

  4. 2 OC 对象的本质(一个Student 占用的内存大小)

    一 Student 占用的内存空间 补充: 1 成员变量占用字节的大小: 2 内存对齐的规则:结构体的内存大小必须是最大成员变量的内存的倍数. 一个 Student 类,继承自NSObject,有两个 ...

  5. 1 OC 对象的本质(一个NSObject 对象占用的内存大小)

    1 前言 目录 1 前言 2 一个NSObject占用多少内存 3 为什么呢 ? 4 如何在内存中看呢? OC 的面向对象都是基于C/C++ 的数据结构实现的 结构体 2 clang 命令转换成c++ ...

  6. Winform程序怎么降低占用的内存?

    1 Winform程序怎么降低占用的内存?winform程序占用的内存数一直居高不下,提供给用户的手册中说明内存不能大于50MB,但是每次运行的时候,内存都会飙高到100多MB. 2 3 后来终于发现 ...

  7. 怎么计算一个对象占用的内存

    怎么计算一个对象占用的内存 这应该是很多人在面试过程中遇到过的一个面试题- 好多人在听到这么一个问题的时候都会瞬间懵逼,也有的人我记住了基本数据类型的占用内存和对象引用是4个字节大小. 这是正确的思考 ...

  8. android获取当前应用占用的内存大小,Android分析已安装应用占用内存

    问题 Android开发时可以通过AndroidStudio提供的一些系列工具查看应用的内存占用,十分的方便. 但是如果是对一个成品的已安装App快速查看内存占用呢,下面简单讲两种方式. 方案一:to ...

  9. SQL SERVER占用服务器内存过高的解决方案

    SQL SERVER占用服务器内存过高的解决方案 参考文章: (1)SQL SERVER占用服务器内存过高的解决方案 (2)https://www.cnblogs.com/purple5252/p/1 ...

  10. Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决

    Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 参考文章: (1)Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决 (2)https://www.cnblog ...

最新文章

  1. php 图片在线编辑功能,summernote在线编辑器提交的内容PHP处理其中图片函数
  2. php数组指针什么用,php数组指针用法详解
  3. Flutter开发之ListView添加HeaderView和FooterView-2(39)
  4. Python入门100题 | 第040题
  5. IOS_SearchBar搜索栏及关键字高亮
  6. 基于.NET Core的简单,跨平台,模块化的电子商务系统-SimplCommerce
  7. 使用SpringMVC模拟文件上传与下载案例
  8. centos7网卡编辑_CentOS7网卡命名中碰到的一个坑
  9. .net framework开发winform_.NET架构开发应知应会
  10. atitit.条形码的原理与生成总结java Barcode4j barcode o5
  11. 手把手教你 1:win7下安装SQL Server2005开发版步骤
  12. 计算机键盘驱动,修改键盘驱动程序_基本计算机知识_IT /计算机_信息
  13. 【大数据】即席查询引擎Presto简单介绍
  14. 2015年阿里巴巴实习生面试经验
  15. mysql实验感想_数据库原理实验心得
  16. C语言及程序设计基础 课程主页
  17. 我们的爱恨情仇:人性-关系-危机-和谐的科学研究
  18. Easy Deep Learning——卷积层
  19. 网站ftp服务器密码修改,ftp服务器忘记密码修改
  20. 创造与魔法怎么自建服务器,创造与魔法开服卷怎么获得 创造与魔法怎么得开服券...

热门文章

  1. 优化算法——阿基米德AOA
  2. JAVA多线程:sleep(0)、sleep(1)、sleep(1000)的区别(四)
  3. thymeleaf中用ajax
  4. NFT元宇宙链游系统开发应用分析及源码部署
  5. 微信 支付宝支付 友盟登录分享 统计
  6. java服务突然被挂掉,停止服务处理方案
  7. vue用Symbol方式全局封装Iconfont阿里巴巴矢量库图标组件
  8. 最小树形图-朱刘算法详解 +例题解析
  9. [计算机网络]十三、配置iptables防火墙(SNAT和DNAT的策略及应用、使用layer7应用层过滤功能)
  10. oracle rank 语法_Oracle-- (RANK) 排名函数