关于一次mycat的大sql查找的大内存分析

     Mycat因为宕机的内存分析,查找大结果集合的sql。

  1. 首先通过 jps 查找linux 中java的进程

             

            可以知道mycat的进程是187644

 

        2.dump jvm的内存

 

            jmap  -dump:live,format=b,file=temp2.bin 187644

           通过上面的命令将jvm内存dump到temp2.bin中

      

         3. 打包

    tar -zcf temp2.tar.gz temp2.bin

         

        4. 下载MemoryAnalyzer软件

            http://www.eclipse.org/mat/

        5.打开temp2.bin文件

            

     

          可以知道上面最大的2G的基本就是内存异常的

  1.   点击查看各个大对象

        

 

2.查找大对象

 

一般mycat 中的占用了如此大的内存 都是大sql导致,接下来叫大家如何抓取sql

 

    session中放置的是对应的web 端连接的mycat的连接 通常加mysql连接.

    rrs 对应的sql的路由的结果集合对象 ,

                    

 

 nodes :  有多少个集合 就是多少个分片需要执行.

 statement: 就是接受到的sql , 但不是最终要执行的sql,最终要执行的sql ,是在nodes里面的RouteResultsetNode的statement

右边的图示nodes继续点开.

 

RouteResultsetNode继续点开

 

srcStatment放置的是web传送的sql

statement 才是真正要执行的sql.   

至此 已经找到了执行的sql ,之后就是对sql 进行优化.

优化方法:

    如果要查询200个节点,循环查询200次 单节点的查询, 而不是一次性查询200个节点.

 

 

6.查看正在执行的线程

 

 

点击过去可以查看各个正在运行的线程.

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值