searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Jprofiler定位中间件异常SQL

2024-09-05 09:26:33
12
0

背景

由于业务并发增高,或者大SQL累积,常常会发生dbproxy FULL GC甚至内存溢出导致进程挂掉。客户常常需要让给出具体SQL,导致进程内存溢出或FULL GC。

在进程内存溢出或者FULL GC时,日志打印、监控等功能往往不正常工作,不能有效****即时提供分析结果,即不能给出内存溢出瞬间的内存 SQL处理情况。此时,内存的分析是一种有效手段和佐证。

本文提供用hprof文件、使用Jprofiler查看和定位SQL的方法。

慢日志、慢日志分析工具(内部开发)可有效提供****内存未溢出、GC不严重时的慢SQL统计信息,可用作分析业务变化或统计的手段

说明

  • 本地版本,Mac Jprofiler 14.0.3
  • 已具备hprof文件。方式一:进程内存溢出自己生成;方式二,手动jmap生成jmap -dump:format=b,file=heapdump.hprof $pid

具体操作

  1. 打开Jprofiler软件,选择打开快照,并选中hprof文件

  1. 等待加载,加载后如下所示

此时,可以看到内存中有大量的占用,其中的byte、Object绝大多都是SQL查询或插入的数据。

  1. 为了定位具体SQL,需要检索处理SQL相关的方法,在输入框输入SingleNodeHandler

  1. 使用选择对象

点击确定

生成如下的实例

  1. 根据实例,反推相关的SQL。以某一个实例为例,

展开箭头,选择rrs->statement,

右击,查看节点详细信息

可以看到具体sql:

  1. 可选搜索处理,不一定有此实例。

当出现大数据量merge汇聚时,还可类似SingleNodeHandler的处理,搜索MultiNodeHandler`,查看stmt的sql,并查看其扫描汇聚大小。

由于本地没有相关的hprof文件,用之前处理线上的截图做参考示例。

0条评论
0 / 1000
张浩
10文章数
0粉丝数
张浩
10 文章 | 0 粉丝
原创

Jprofiler定位中间件异常SQL

2024-09-05 09:26:33
12
0

背景

由于业务并发增高,或者大SQL累积,常常会发生dbproxy FULL GC甚至内存溢出导致进程挂掉。客户常常需要让给出具体SQL,导致进程内存溢出或FULL GC。

在进程内存溢出或者FULL GC时,日志打印、监控等功能往往不正常工作,不能有效****即时提供分析结果,即不能给出内存溢出瞬间的内存 SQL处理情况。此时,内存的分析是一种有效手段和佐证。

本文提供用hprof文件、使用Jprofiler查看和定位SQL的方法。

慢日志、慢日志分析工具(内部开发)可有效提供****内存未溢出、GC不严重时的慢SQL统计信息,可用作分析业务变化或统计的手段

说明

  • 本地版本,Mac Jprofiler 14.0.3
  • 已具备hprof文件。方式一:进程内存溢出自己生成;方式二,手动jmap生成jmap -dump:format=b,file=heapdump.hprof $pid

具体操作

  1. 打开Jprofiler软件,选择打开快照,并选中hprof文件

  1. 等待加载,加载后如下所示

此时,可以看到内存中有大量的占用,其中的byte、Object绝大多都是SQL查询或插入的数据。

  1. 为了定位具体SQL,需要检索处理SQL相关的方法,在输入框输入SingleNodeHandler

  1. 使用选择对象

点击确定

生成如下的实例

  1. 根据实例,反推相关的SQL。以某一个实例为例,

展开箭头,选择rrs->statement,

右击,查看节点详细信息

可以看到具体sql:

  1. 可选搜索处理,不一定有此实例。

当出现大数据量merge汇聚时,还可类似SingleNodeHandler的处理,搜索MultiNodeHandler`,查看stmt的sql,并查看其扫描汇聚大小。

由于本地没有相关的hprof文件,用之前处理线上的截图做参考示例。

文章来自个人专栏
常见故障复盘
8 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0