TiProxy 常见问题
本文介绍了一些 TiProxy 常见问题、原因及解决办法。
TiProxy 连接不上
可以通过以下步骤依次排查:
- 检查连接器版本 是否支持。如果连接器不在列表中,请查看连接器是否支持认证插件。
- 如果客户端报错
No available TiDB instances, please make sure TiDB is available
,请检查是否有 TiDB server,且 TiDB server 的 SQL 端口和 HTTP 状态端口是否都可以正常连接。 - 如果客户端报错
Require TLS enabled on TiProxy when require-backend-tls=true
,请检查 TiProxy 是否正确配置了 TLS 证书。 - 如果客户端报错
Verify TiDB capability failed, please upgrade TiDB
,请检查 TiDB server 版本是否为 v6.5.0 及以上版本。 - 如果客户端报错
TiProxy fails to connect to TiDB, please make sure TiDB is available
,请检查 TiProxy 的节点是否能连接到 TiDB server。 - 如果客户端报错
Require TLS enabled on TiDB when require-backend-tls=true
,请检查 TiDB 是否配正确配置了 TLS 证书。 - 如果客户端报错
TiProxy fails to connect to TiDB, please make sure TiDB proxy-protocol is set correctly
,请检查是否 TiProxy 开启了 proxy.proxy-protocol 而 TiDB server 没有开启proxy-protocol。 - 检查 TiProxy 是否配置了
max-connections
且 TiProxy 上的连接数超过了最大连接数限制。 - 检查 TiProxy 日志,查看错误信息。
TiProxy 没有迁移连接
可以通过以下步骤依次排查:
- 是否没有满足 TiProxy 的使用限制。可以结合 TiProxy 日志进一步确认。
- 是否正确配置了 TiDB 的
security.session-token-signing-cert
,security.session-token-signing-key
,和graceful-wait-before-shutdown
。
TiDB server 的 CPU 使用率不均
可以通过以下步骤依次排查:
- 检查 TiDB server 之间的 CPU 使用率差异是否较大。TiProxy 并不保证所有 TiDB server 的 CPU 使用率接近,只有当 CPU 使用率差异较大影响查询延迟时才会进行负载均衡。
- 如果有 TiDB server 的连接数逐渐降为 0,可能是受到了其他负载均衡策略的影响,你可以通过查看 Grafana 中的
Session Migration Reasons
检查是否有基于其他策略的迁移。 - 检查 TiProxy 配置项
policy
的值是否为location
。采用地理位置优先的策略后,TiProxy 将不保证不同地理位置的 TiProxy 之间的 CPU 使用率均衡。 - 检查 TiProxy 的版本,仅 v1.1.0 及以上版本支持基于 CPU 的负载均衡,较低版本基于最少连接数的策略负载均衡。
- 如果以上情况均不符合,可能是迁移连接失败,请根据 TiProxy 没有迁移连接排查。
延迟明显升高
可以通过以下步骤依次排查:
- 通过 Grafana 监控指标检查 TiProxy 上显示的延迟。如果 TiProxy 上显示的延迟不高,则是客户端负载高或客户端与 TiProxy 之间的网络延迟高。
- 通过 Grafana 监控指标检查 TiDB server 上显示的延迟。如果 TiDB server 上显示的延迟高,则通过 TiDB 的延迟明显升高 的步骤排查。
- 通过 Grafana 监控指标检查 TiProxy 与 TiDB server 之间网络通信时间。
- 检查 TiProxy 的 CPU 使用率。如果 CPU 使用率超过 90%,则需要扩容 TiProxy。