上一篇文章,记flume部署过程中遇到的问题以及解决方法,记录了flume在运行过程中遇到的问题的解决方法,本文将记录在项目调试过程中对flume性能的优化。
再放上项目的拓扑结构图:
实际生产环境中,agent层的机器大约有50台,在高峰时期生成的日志量大约在5000条/s, 每天总共生成的日志量大约在8T左右, collector的机器有8台,所以对该系统的传输效率有很高的要求。
在测试中,发现在使用基本配置时,flume发送数据的效率并不是很理想,agent向collector发送数据最快也就每秒1000条左右,远不能满足系统传输需求,在随后的调试过程中,通过修改jvm环境参数以及agent、collector层的配置,逐步使得传输性能达到要求,现将调试过程记录如下:
agent层的调试数据:
优化方法 | java 环境 | channel类型 | sink类型与个数 | 是否压缩 | source接收到条数&速度 | channel已写入 &channel占用率 | sink输出量 | sink输出速度 | cpu占用 | 内存占用 | 总结 |
---|---|---|---|---|---|---|---|---|---|---|---|
无 | 默认 | file 100w | 负载均衡 2个avro sink | 否 | 2472192 1373/s | 2473728 0.02% | 2360100 | 1311/s | 约35% | 8.6G | 传输效率很低 |
优化java配置,启用2G内存 | Xms2g Xmx2g Xss256k Xmn1g | file 100w | 负载均衡 2个avro sink | 否 | 6226688 3459/s | 6227712 99.90% | 5228000 | 2904/s | 约30% | 8.6G | 传输效率有较大提升 |
avro压缩传输 | Xms2g Xmx2g Xss256k Xmn1g | file 100w | 负载均衡 2个avro sink | 是 | 5076224 2820/s | 5077504 99.90% | 4077800 | 2265/s | 约47% | 10.4G | 传输效率不升反降 |
采用memory channel | Xms2g Xmx2g Xss256k Xmn1g | memory 100w | 负载均衡 2个avro sink</ |