记录一次交易耗时有毛刺TDSQL数据库排查过程
信息同步非常重要,解决问题前,务必从应用获取实例信息、sql关键字、问题时间段、问题描述。
处理步骤:
1、登陆赤兔,打开实例监控信息,检查CPU、内存、IO、缓冲命中率、proxy汇总请求量耗时情况,初步判断实例问题
2、登陆所有proxy节点,查看反馈有毛刺的相关SQL耗时
cd /data/tdsql_run/$PORT/gateway/log
interf日志记录proxy从接收到请求、到proxy返回给客户端的时间
cat interf_xxx | grep -i ‘table_name’ | grep -i ‘查询关键字’| awk -F’&timecost=’ ‘{print $NF,$0}’ |sort -nr -k 1| head -n 10
sql日志记录proxy把请求发给db,再到proxy接收到db返回请求的时间
cat sql_instance_xxx | grep -i ‘table_name’ | grep -i ‘查询关键字’| awk -F’&timecost=’ ‘{print $NF,$0}’ |sort -nr -k 1| head -n 10
如果对某条具体的SQL耗时有疑问,从sql日志记录中拿到该sql的qid,到interf中查找,比较sql在sql日志和interf日中的时间差
时间差可能和集群跨中心、proxy无法下推有关系
3、分析该SQL具体类型,是select、insert、delete、update还是其他ddl语句,查看SQL涉及到的表行数、执行计划、是否走了索引、索引的过滤性等是否可以优化
4、登陆db节点,查看日志IO情况
cd /data/monitorlog/iostatlog