请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

netty对象池应用解决gc频发问题?

老师,请教个生产问题。
业务背景:每10分钟会拉取一批数据(100条左右,每条两百多个字段),然后根据业务需要会分发200次消息到rabbitMQ,MQ消费者根据各自的业务对这批数据进行saveBatch/updateBatch, 之后会进行websocket推送,mq配置的并发线程数5,每个线程处理耗时10s左右
现象:这个过程cpu会飙高200%~300%,gc情况也会剧增
猜测:每个线程都会不断创建、销毁entity对象造成gc频繁

解决方案:目前想尝试用netty对象池去复用entity对象,看是否能降低gc情况

但有点无从下手,从数据库查询出的list不知如何复用

正在回答 回答被采纳积分+3

插入代码

1回答

好帮手慕小蓝 2025-02-11 17:21:37

关于使用netty对象池来复用entity对象以降低GC情况的问题,以下是一些可能的解决方案:

  1. 使用netty对象池:netty提供了一个对象池,可以复用ByteBuf对象,从而减少GC频率。

  2. 优化netty配置:您可以尝试调整netty的配置来提高性能。例如,通过-XX:ParallelGCThreads参数设置并行GC线程数,以提高垃圾回收的效率。

  3. 减少对象创建和销毁:每个线程都会不断创建、销毁entity对象可能导致频繁的GC。您可以尝试使用netty对象池来复用entity对象,减少对象创建和销毁的次数。

  4. 调整JVM参数:您可能需要调整JVM参数来优化性能。例如,通过-XX:MetaspaceSize和-XX:MaxMetaspace参数设置元空间的初始大小和最大大小。

  5. 监控和诊断:使用监控工具和日志来诊断并发问题。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号