首页 > 其他分享 >一次 kafka 消费者的性能调优过程

一次 kafka 消费者的性能调优过程

时间:2024-04-19 09:35:36浏览次数:28  
标签:err trace pprof 性能 goroutine 调度 kafka 调优 CPU

背景

最近上线了一个kafka的消费者,数据规模大概是低峰期单机每分钟消费88W条,QPS 14666。上线后看了下数据,进程CPU到了132%。

 

8核的机器,单进程CPU132倒也还好,但还是想看看,到底是咋回事。

过程

第一次排查&优化(协程池化->约为0优化)

于是就开始采集pprof的数据。golang pprof的采集是十分便捷的,在main.go引入net/http/pprof包,包里pprof.go文件的init()方法就会自动注册相关的http路由。

 

CPU的火焰图看着就有点不合理,光是runtime的部分,居然耗费了1/3的CPU。首先怀疑是goroutine创建过多的问题,我们消费者框架如下图,服务从kafka消费到一条msg后,会分发给每一个plugin,为了plugin之间互不影响,所以都是异步调用plugin的。

 

所以这里每条消息会有放大的问题,这个服务有3个plugin,每条消息就会创建3个goroutine,也就是每秒创建14666*3约45000 goroutine。解决办法也简单,就是池化,以达到goroutine复用的目的,也就是老生常谈的协程池了。这里用了我司的一位go社区大牛的协程池库ants[1](可惜这位大牛已经江湖见了我哭死),有协程池需求的可吃波安利。

标签:err,trace,pprof,性能,goroutine,调度,kafka,调优,CPU
From: https://www.cnblogs.com/77cxw/p/18145098

相关文章

  • 性能测试——性能测试-常见linux性能指标监控命令
    vmstat命令:           top命令:            free-h命令:             df-h命令:         mpstat命令:             sar–收集和报告系统活动 ......
  • Kafka 线上性能调优
    Kafka线上性能调优是一项综合工程,不仅仅是Kafka本身,还应该从硬件(存储、网络、CPU)以及操作系统方面来整体考量,首先我们要有一套生产部署方案,基于这套方案再进行调优,这样就有了可靠的底层保证,才能保证Kafka集群整体的稳定性。1.线上部署方案1.1操作系统我们知道Kafka是......
  • 性能测试——性能测试-常见性能指标-总体概况
    并发 概念: 指同一个时间点执行相同的操作(如:秒杀) 同一时间点,向服务器发起的请求(可能是不同的请求)只要向服务器发起请求,那么服务器在这一时间点内都会收到请求(不管是不是同一个请求)  并发用户数(重点)同一时间点,发出请求的用户数,一个用户可以发出多个请求场景不一定......
  • Unity性能优化——托管堆/GC
    了解托管堆许多Unity开发者面临的另一个常见问题是托管堆的意外扩展。在Unity中,托管堆的扩展比收缩容易得多。此外,Unity的垃圾收集策略往往会使内存碎片化,因此可能阻止大型堆的收缩。托管堆的工作原理及其扩展原因“托管堆”是由项目脚本运行时(Mono或IL2CPP)的内存管理器......
  • 性能测试——概念概况
    负载测试:逐步增加系统负载,测试系统性能变化,并最终确定系统所能承受的最大负载量。          通过逐步增加并发用户数,测试系统性能变化,并最终确定系统所能承受的最大负载量。         简单理解:逐步加压,找系统能达到的最大并发数。 过程:......
  • AB性能测试分析
    官方文档:https://httpd.apache.org/docs/trunk/programs/ab.html测试场景:模拟10个用户,对应用接口发起总共1000次请求。测试命令:ab-n1000-c10'http://139.224.215.199:60011/api/v1/quicksearch/?id=170'测试报告:apache的版本信息,与本次测试无关[root@VM-16-11-centos......
  • Unity性能优化——资源优化(一)
    实际项目中发现的许多问题都是源自无心之过:临时的“测试”更改和疲惫不堪的开发人员的误点击可能会暗地里添加性能不良的资源或更改现有资源的导入设置。对于任何大规模的项目,最好是将防止人为错误作为第一道防线。编写一小段代码来禁止将4K未压缩纹理添加到项目中,是相对简单的......
  • 肖sir___性能之nmon(性能硬件指标)
    nmon基本介绍,nmon是帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。分析工具分析AIX和Linux性能的免费工具,这个高效的工具可以工作于任何屏幕、telnet会话、甚至拨号线路。另外,它并不会消耗大量的CPU周期,通常低于百分之二。在更新的计算机上,其CPU使......
  • 肖sir___性能之插件(软件指标)
    一、监听器中的插件@gc - Active Threads Over Timeip 活动线程时间@gc - AutoStop Listener 自动停止侦听器@gc - Bytes Throughput Over Timejp 字节吞吐量随时间变化@gc -Composite Graph 综合图@gc - Connect Times Over Timejp 连接时间@gc -Conso......
  • kafka中文输出乱码
    目录乱码问题通常是由于编码不一致导致的。Kafka在处理消息时,如果生产者和消费者的字符编码设置不一致,可能会导致乱码。解决方法:确认Kafka生产者和消费者的字符编码设置一致。对于Java生产者和消费者,可以在配置中设置字符编码:props.put("key.serializer","org.apache.kafk......