使用windbg分析性能问题案例(大循环导致的性能问题)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

使用windbg分析性能问题案例(大循环导致的性能问题)

问题描述

销售订单选择物料回填,1000行超过5分钟。

分析

       抓取http数据,发现GetServiceFormState花费了5分钟。

       

       监控数据库端未发现长时间的SQL,SQL执行数量属于合理范围。怀疑问题在应用服务器。

       通过windbg进行调试,在执行过程中,每隔1分钟抓取堆栈信息,发现都在执行IsExistEntryField方法。

      

      检查方法代码,发现有一个循环调用

      

     检查方法中相关对象的情况

     0:077> !objsize 000002327d8d6ad0 sizeof(000002327d8d6ad0) = 440 (0x1b8) bytes (Kingdee.BOS.JSON.JSONObject)--这个对象只有440字节,不存在问题

     但发现JSONArray存储数量达到34636个,在最坏情况,循环将超过了3W次。

     

     查看对象的引用关系

     

结论

    通过上面代码,结合JSONArray的大小,说明问题代码如下。因为大量的循环,导致了性能问题。

    


使用windbg分析性能问题案例(大循环导致的性能问题)

问题描述销售订单选择物料回填,1000行超过5分钟。分析 抓取http数据,发现GetServiceFormState花费了5分钟。 监...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息