flume性能调优

调优的出发点是因为在项目当中,那多个百兆的文件进行读写测试,发现默认配置在刚开始数据量较小的时候响应速度很快,但是随着数据量的增加,响应速度越来越慢。

我们知道,flume-ng agent包括source、channel、sink三个部分,这三部分都运行在JVM上,而JVM运行在linux操作系统之上。因此,对于flume的性能调优,就是对这三部分及影响因素调优。

1、source的配置
该项目中采用的是 taildir source,他的读取速度能够跟上命令行写入日志的速度,故并未做特殊的处理。

2、channel的配置
可选的channel配置一般有两种,一是memory channel,二是file channel。
建议在内存足够的情况下,优先选择memory channel。
楼主尝试过相同配置下使用file channel和memory channel,file channel明显速度较慢,并且会生成log的文件,应该是用作缓存,当source已经接收但是还未写入sink时的event都会存在这个文件中。这样的好处是保证数据不会丢失,所以当对数据的丢失情况非常敏感且对实时性没有太大要求的时候,还是使用file memory吧。。
楼主一开始的memory channel配置用的是默认的,然后控制台报出了如下警告:

The channel is full or unexpected failure. The source will try again after 1000 ms

这个是因为当前被采集的文件过大,可以通过增大keep-alive的值解决。深层的原因是文件采集的速度和sink的速度没有匹配好。
所以memory channel有三个比较重要的参数需要配置:

#channel中最多缓存多少
a1.channels.c1.capacity = 5000
#channel一次最多吐给sink多少
a1.channels.c1.transactionCapacity = 2000
#event的活跃时间
a1.channels.c1.keep-alive = 10

3、sink的配置
可以通过压缩来节省空间和网络流量,但是会增加cpu的消耗。
batch:size越大性能越好,但是太大会影响时效性,一般batch size和源数据端的大小相同。

4、java内存的配置

export JAVA_OPTS="-Xms512m -Xmx2048m -Dcom.sun.management.jmxremote"

主要设计Xms和Xmx两个参数,可以根据实际的服务器的内存大小进行设计。

5、OS内核参数的配置
如果单台服务器启动的flume agent过多的话,默认的内核参数设置偏小,需要调整。(待补充,暂时还未涉及)。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值