问题描述:
Dubbo Rpc调用异常(第1次发送):
项目:agent-admin
类:com.yunji.oms.base.api.supplier.ISupplierService
方法:validLogin
失败次数:131
成功次数:1688
平均耗时:744
provider:172.16.4.13
consumer:172.16.4.19
时间:2018-12-06 17:50:30
Agentadmin调用异常,去线上服务器看agentadmin日志,日志出现Full GC.
问题分析:
在tomcat bin目录下通过jmap -dump:format=b,file=20181206.hprof 6561命令将内存结构全部dump到二进制文件中20181206.hprof中,然后用Eclipse Memory Analyzer工具打开该文件。得到如下图,图1所示的内存结构图,很明显该图有一个Problem,点击 See stacktrace展示图2内容。也可以直接看tomcat bin下面的.hprof,tomcat下面会自动生成内存结构的.hprof文件。

在这里插入图片描述

图1
确定问题点:
从该图中的内容可以看出PurchaseReportController这个类 473行代码可能有问题。在IDEA找到该类,打开。如图3示。
在这里插入图片描述

图2

图3所示代码 parser.parse(parserParam)中parserParam对象过大。parserParam将file中的内容一次处理。

在这里插入图片描述

图3
虽说rowBatchSize设置为20,但实际处理时是全部一次性处理的。如何优化如图5所示。
在这里插入图片描述

图4
解决方案:
要加入.rowHandler的处理,这样才能按rowBatchSize所设置的条码进行处理。要不然它将一次性将file文件中所有内容进行处理。
在这里插入图片描述

图5

posted on 2021-02-03 09:41  路飞_lufei  阅读(183)  评论(0)    收藏  举报