全表查询sql执行链路排查
问题描述:
发现有sql查询全表数据,慢查询语句,根据druid上的sql监控查看到。
主要根据标红的列确定问题sql。
点击进去可以看到详细sql信息。
问题排查目标:
发现这个语句高层调用方特别多,目标是排查出上层(controller)哪个方法没有判断好条件,无条件传参到底层进行的全表查询。
问题排查手段
使用Arthas中的stack和watch命令,另外可以辅助用monitor命令。
watch命令显示调用方法的参数信息并可以通过方法响应时间过滤出出现问题的那次调用的时间点。
- -x表示遍历深度,可以调整来打印具体的参数和结果内容,默认值是1。
- -n 代表打印几次
- -b 代表方法执行前
- -s 代表方法执行后
使用文档:https://arthas.aliyun.com/doc/watch.html
stack命令查询实时方法调用链路,根据上面时间点stack中查询对应时间点的调用链路方法,定位问题原因。
- -n 代表打印次数
- 可以排除调用链路
定位问题原因*
根据原因思考问题解决方案*
实践验证方案有效性*
提交验证结果