【 TiDB 使用环境】生产环境
【 TiDB 版本】v7.1.2
【复现路径】
【遇到的问题:问题现象及影响】
TiDB Dashboard SQL 语句分析和慢查询页面报错
- Error 1105 (HY000): runtime error: invalid memory address or nil pointer dereference
- common.bad_request
注:非版本 bug,因为是用了很长时间才出现的,重启解决不了所以升级 7.1.2,但依旧报错
【资源配置】
【附件:截图/日志/监控】
重启/迁移 pd 都没效果
升级到 7.1.2 也没用
你看下你tidb的主机目录下slow-query目录下日志多吗?多的话删点慢sql日志
配置保留30天,目前看每台有70+份
tidb-deploy/tidb-4000/log/tidb_slow_query*.log
tidb菜鸟一只
(小菜一颗)
10
这么多慢日志啊。。。。你要不调整下慢日志的阈值?或者你们不对慢sql进行优化的吗?先把历史的都删掉,dashboard应该不会再报错了
清理掉那些慢查询日志文件,重启了 tidb-server,还是一样报错
清掉了慢日志文件了,重启了 tidb-server,也一样
有猫万事足
13
根据你提供的这个堆栈,我翻了下代码。感觉非常迷惑。
以我粗浅的经验来说,这个堆栈最上面的地方就是空指针引用到的对象。
https://github.com/pingcap/tidb/blob/v7.1.1/store/copr/coprocessor.go#L1098
这个1098行的报错,让我觉得这个worker对象因为某种原因为null。感觉这个结论非常不靠谱。 菜了菜了。
select * from INFORMATION_SCHEMA.CLUSTER_STATEMENTS_SUMMARY_HISTORY limit 1;
这个sql如果查询固定报错的话,建议直接去github上提个bug。
不过内容除了报错的堆栈以外,建议也提供一下执行sql的现场信息,更好排查。
https://docs.pingcap.com/zh/tidb/stable/sql-plan-replayer#plan-replayer-导出示例
PLAN REPLAYER DUMP EXPLAIN select * from INFORMATION_SCHEMA.CLUSTER_STATEMENTS_SUMMARY_HISTORY limit 1;
执行上述语句,然后去每个tidb上去找一下返回的zip文件的名称。把这个zip文件也上传到issue里面去。这样更方面pingcap的开发排查问题。
zip里面不会包含用户数据的。你不放心可以打开自己看的。
感觉像数据源有问题,可以试一下把监控模块prometheus和grafana缩掉重新安装试试
报错写的invalid memory address,要不从内存方向看一下呢?
查一下系统内存,再查一下 tidb_mem_quota_query
内存
再检查一下 tidb_enable_prepared_plan_cache
看看 Prepared Plan Cache是否是开启状态,默认是开启的,先关了,重启一下试试,排查一下原因
tidb_mem_quota_query 目前是默认1G,但我试了下改成32G还是一样报错
tidb_enable_prepared_plan_cache 关掉,也是一样报错,重启 tidb-server 后 tidb_enable_prepared_plan_cache 值是被重置回去了