使用jstack定位响应时间超长问题。

 


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

开户流程50用户并发情况,/mb/pj6vsv/visitor/sms-otp-verify-v2接口50并发响应时间超过6秒钟,应用服务器资源很低。


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

2.1、进入usercenter服务控制台,jps查看当前运行服务进程PID

[if !vml]

[endif]

2.2、先通过jdk自带的工具jstack保存一下JVM进程对应的栈信息,具体的命令是:

jstack -l 1> 1-stack,记录对应进行的PID,多记录几次线程堆栈的快照,方面后续在快照中找对应的线程调用内容。

[if !vml]

[endif]

2.3、查看生成的线程堆栈快照分析。查看到读取mysql相关的代码


截图待补充


2.4、考虑是数据的问题,进入数据库服务器查看资源情况。

[if !vml]

[endif]

数据库CPU使用率达到100%

2.5、查看数据库慢sql统计,其中updaate语句执行时间达到6秒或7秒钟。

[if !vml]

[endif]

2.6、分析sql语句。

UPDATEt_visitor  SET    status = N,    gmt_modified =NOW(),   modifier = creator    WHERE is_deleted = N   AND user_id = N


此sql语句执行计划扫描11w+数据记录,后续的where条件没有索引。


2.7、对比SIT发现此数据表存在user_id索引,所以在性能环境增加此索引。

[if !vml]

[endif]

2.7、增加索引后慢sql问题解决,响应时间从6秒钟降低到300+毫秒。但是数据库CPU使用率依然达到98%。


2.8、继续查看数据库慢sql,存在大量select语句的慢sql,分析此sql依然没有索引

SELECT

id,

user_id,

biz_type,

did,

mobile,

email,

user_name,

STATUS,

device_model,

device_sys_version,

country_code

FROM

t_visitor

WHERE

is_deleted = N

AND did = N

AND biz_type = N

AND STATUS = N;


2.9、对比sit数据库也没有对此sql进行添加索引,在性能环境考虑新增。


2.10、增加索引后结果如下。

性能测试环境对t_visitor数据表did字段增加索引后验证,数据库使用率从99%降至68.1%,TPS从最初14笔/秒,上升到74笔/秒。

[if !vml]

[endif]

[if !vml]

[endif]


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

3.1、如上步骤钟描述


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

数据库使用率从99%降至68.1%,TPS从最初14笔/秒,上升到74笔/秒。

[if !vml]

[endif]

[if !vml]

[endif]

 

同时产生usercenter和corecenter服务CPU资源使用率过高问题,此问题的分析过程见文档:《使用jstack定位分析CPU消耗问题.doc》

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

推荐阅读更多精彩内容

  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 829评论 0 0
  • Unit 1 Can you play the guitar? 2b: Reads the ads. Match ...
    jane2001阅读 2,002评论 0 1
  • 451.Which of the following is not avalid setting for the ...
    GLeo阅读 561评论 0 0
  • CHAPTER 1: INTRODUCTION 第一章:简介 In this chapter, we discus...
    哈小奇阅读 1,039评论 2 1
  • Sonar翻译 Sonar翻译... 1 User Guide(用户指南)... 2 第一章Fixing the ...
    pig_zzZ阅读 2,840评论 0 1