使用线程剖析诊断代码问题

基调听云应用与微服务线程剖析是代码级的诊断工具,当服务器端应用出现系统卡顿或者响应慢时,您可以以非常低的系统开销对应用实例进行线程剖析,采集线程状态,定位性能消耗最大的线程和方法,进而突破性能瓶颈。

使用场景

  • 在促销活动期间应用出现响应慢问题,严重影响客户体验和促销效果,应用与微服务线程剖析可为您快速定位问题代码,避免销售损失。
  • 当服务器端应用出现系统卡顿或者响应慢时,研发部门定位问题往往需要很长时间,并且需要研发、产品、运维多个部门的人员参与,效率较低。应用与微服务线程剖析可快速定位性能消耗最大的线程和方法,问题定位时间大大缩短,并且减少了故障定位参与的部门和人员。
  • 当业务比较复杂,偶发性的慢事务无法复现时,应用与微服务线程剖析可为您还原代码的真实执行过程。
  • 当应用出现大量的慢事务时,应用与微服务线程剖析可为您及时保存现场。

对应用实例进行线程剖析

  1. 登录应用与微服务控制台

  2. 在左侧导航栏中选择应用,然后在页面左上角的业务系统下拉菜单中选择目标业务系统。

  3. 在应用列表中单击目标应用,进入应用详情页面。

  4. 在页面顶部的实例下拉菜单选择待剖析的应用实例,然后单击线程剖析页签。

  5. 选择实例。

    只可以选择一个实例,暂无实例时不能进行线程剖析。

  6. 设置采样持续时间:1~10分钟的可选范围,默认选择2分钟。

  7. 设置采样时间间隔:50~100毫秒的可选范围,默认选60毫秒。

  8. 单击开始剖析按钮,开始剖析。

    profiling

  9. 查看剖析结果。

剖析完成后,可在右侧的线程剖析列表中查看剖析结果。线程剖析列表展示采集成功的剖析数据,包括:开始剖析时间、持续时间、采集人。用户可删除所选的剖析记录。

单击一个剖析条目,可以查看所有线程的代码调用堆栈详细信息。默认展开最耗时线程的堆栈,即该应用的全部线程中耗时占比最高的线程。您还可以展开和收起所有线程和方法。如果发现某个方法耗时过长,可对该方法进行自定义嵌码配置,获取到的性能数据将在事务分解表格、事务追踪的调用栈中进行展示,可进一步分析,自定义嵌码配置具体请参见自定义嵌码

stacktrace

线程剖析的数据来自基调听云应用与微服务的NBFS文件系统,NBFS文件系统中有4类数据:Agent、Task、Web和Other。线程剖析不分析Agent,只分析Web、Task和Other 3类数据。默认展示行号。

  • Web代表Web请求
  • Task代表后台任务
  • Other代表其他

对事务进行线程剖析

如果您发现某个事务的响应时间过长,可以对某个应用实例进行事务级别的线程剖析,采集线程状态,定位该事务中性能消耗最大的线程和方法。

对事务进行线程剖析的步骤如下:

  1. 在左侧导航栏中选择事务,在事务列表中单击目标事务,进入事务详情页面。

  2. 在页面顶部单击线程剖析页签。

  3. 在页面右上角单击新建剖析按钮,弹出新建线程剖析对话框。

  4. 勾选要进行线程剖析的应用实例、持续时长、采样间隔和事务最大请求次数。

    应用实例:一个事务可能会在多个应用实例中执行,因此涉及应用实例的选择。

    事务最大请求次数:剖析时间范围内,事务的请求数超过设置的值时(默认值为100),将不再进行剖析。持续时间和事务最大请求次数两个条件满足其一,即结束剖析。

    说明:应用实例的CPU使用率和内存使用率大于80%时,不允许执行线程剖析。

  5. 单击开始剖析按钮,剖析任务将显示在剖析列表中。

    新的剖析任务会等待任务下发,大约1分钟后开始执行。支持自定义表头和批量删除剖析任务。

  6. 当状态列显示为“已完成”时,可单击该条任务查看剖析结果。

    上方显示各种类型、各种执行状态的线程的数量。

    支持按线程聚合和按调用方法聚合2种聚合方式,单击按钮进行切换。

    当选择按调用方法聚合时,可查看调用该事务的所有线程的代码调用堆栈详细信息。默认展开最耗时线程的堆栈。支持根据线程过滤调用堆栈。单击包名过滤按钮,选中的包名将不显示在堆栈中。单击收起所有页签,仅展示Web、后台和其他3类线程的耗时百分比。如果发现某个方法耗时过长,可对该方法进行自定义嵌码配置,获取到的性能数据将在事务分解表格、事务追踪的调用栈中进行展示,可进一步分析,自定义嵌码配置具体请参见自定义嵌码

results matching ""

    No results matching ""