客户端报 server is busy 错误


上面的截图:
一个 TiKV 包含两个 RocksDB 实例,一个用于存储 Raft 日志,位于 data/raft 。另一个用于存储真正的数据,位于 data/db 。通过 grep "Stalling" RocksDB 日志查看 stall 的具体原因,RocksDB 日志是 LOG 开头的文件,LOG 为当前日志。
这句话看懂了。但到tikv实际的环境里面,对应不上

文件跟文档里面描述的不一样。如何通过 grep "Stalling" RocksDB 日志查看 stall 的具体原因,这个具体怎么查?查询哪个文件?


监控上看,的确有server is busy,我想查到问题到底出现在哪块?文件里面: 通过 grep "Stalling" RocksDB 日志查看 stall 的具体原因,怎么查询?

grep “Stalling” rocksdb.log
查看

tikv 监控 rocksdb 里有stall reason

1 个赞


没有查询到这个到文件

同一时间段里面的。看图是正常的。

查询所在的路径正确吗?

除了客户端报 server is busy 错误,还需要确认在问题时段附近,有没有其他相关联的异常内容。比如下面几项内容都会触发server is busy:

  • 出现 write stall
  • 出现 scheduler too busy
  • 出现 raftstore is busy
  • Coprocessor 出现了堆积

确认方式和解决办法的具体内容,可以参考官网文档:
https://docs.pingcap.com/zh/tidb/stable/tidb-troubleshooting-map#43-客户端报-server-is-busy-错误

应该是当前tikv服务器负载过高造成的,可能是由于高并发访问、大量数据处理或其他系统负载引起的。 你可以看下那段时间内tikv服务器资源问题(cpu、内存使用情况等),也可以看下监控图是否有热点问题

那就是其他原因引起的

高版本已经在scheduler层替代了rocksdb的流控机制,参考:https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#storageflow-control
同时TiKV Detail面板也增加了flow control专门的页签,可以看相关监控
查询TiDB 的日志,搜索关键字serverisbusy,可以看到busy的原因,定位到最后根本原因一般是tikv压力大,热点问题。

1 个赞