使用jprofile定位CPU消耗问题

 


[if !supportLists]1、 [endif]问题现象描述

银行app个人中心修改用户地址信息,当大于50用户并发时CPU使用率超过100%,存在部分业务报错信息。



[if !supportLists]2、 [endif]问题定位过程

2.1、使用容器云,查看corecenter服务的日志,存在报错信息:An error occurred.Sorry, the page you are looking for is currentlyunavailable

[if !vml]

[endif]

2.2、登录windows机器,打开Jprofile工具,选择需要监控的服务。

[if !vml]

[endif]

[if !vml]

[endif]

[if !vml]

[endif]

[if !vml]

[endif]

连接时注意要查看对应物理机服务对应的端口。

[if !vml]

[endif]


2.3、在压力测试场景执行时,查看CPU Views页签,查看消耗资源最高的方法。

[if !vml]

[endif]

存在zatech.bank.corecenter的代码方法调用。定位到代码位置。

com.zatech.bank.framework.log.pattern.ZaFileOfCallerConverter.convert是最终的方法

 

另外报错的原因开发定位为:在消息发送时为了获取英文名称查询到很多不需的信息,同时在地址转换时存在过多的对象转换


[if !supportLists]3、 [endif]问题解决方案

3.1、CPU占用问题通过分析jprofile抓取的方法,com.zatech.bank.framework.log.pattern.ZaFileOfCallerConverter.convert

为日志组件占用,logback组件比较消耗CPU,此问题由于开发需要更详细的日志来定位生产问题。生产环境暂时不能进行处理优化。


3.2、业务报错问题,开发修改代码进行了简化消息发送时的多余查询,优化多余的对象转换。


[if !supportLists]4、 [endif]优化后结果

4.1、个人中心修改地址信息在50、80用户不同压力并发下无业务报错问题。

[if !vml]

[endif]

4.2、CPU使用率高问题,是日志组件占用,和业务代码逻辑没关系。且日志是定位生产问题的必要内容,可暂时不处理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 849评论 0 0
  • Hadoop HA集群搭建文档.............................................
    钟敏_1788阅读 1,499评论 0 0
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 522评论 0 0
  • Sonar翻译 Sonar翻译... 1 User Guide(用户指南)... 2 第一章Fixing the ...
    pig_zzZ阅读 2,935评论 0 1
  • 本文涉及本人一年来学到的商业,心理学,进化论,哲学范畴综合在一起的知识以及个人观点,希望对您有启发 今天是周更写作...
    寒阳198阅读 326评论 0 2