8-RESOURCE_EXHAUSTED, message: "Received message larger than max (9612720 vs. 4194304)

【 TiDB 使用环境】测试
【 TiDB 版本】v5.3.0
【复现路径】运行tidis
【遇到的问题:问题现象及影响】
我在3台物理服务器(每台内存为128G)上,部署了3节点的TiKV+3节点的PD和3节点的TiDB,基于3节点的PD部署了Tidis。
【资源配置】
Tidis server的config.toml主要内容如下:

[server]
pd_addrs = "172.26.9.81:2379,172.26.9.82:2379,172.26.9.83:2379"
instance_id = "1"
prometheus_listen = "0.0.0.0"
prometheus_port = 8080
log_level = "info"
log_file = "tikv-service.log"

通过Tidis插入排序集数据,一段时间后,在日志tikv-service.log中,出现了如下错误:

2023/01/04 12:54:40.182 +08:00 ERRO error occured so rollback transaction: gRPC error: RpcFailure: 8-RESOURCE_EXHAUSTED Received message larger than max (9612720 vs. 4194304)
2023/01/04 12:54:40.183 +08:00 ERRO connection error TikvClient(Grpc(RpcFailure(RpcStatus { code: 8-RESOURCE_EXHAUSTED, message: "Received message larger than max (9612720 vs. 4194304)", details: [] })))
2023/01/04 12:54:44.090 +08:00 ERRO error occured so rollback transaction: gRPC error: RpcFailure: 8-RESOURCE_EXHAUSTED Received message larger than max (9723284 vs. 4194304)

以上错误的关键信息,应该是:

RpcFailure: 8-RESOURCE_EXHAUSTED Received message larger than max (9723284 vs. 4194304)

【附件:截图/日志/监控】
经查,好像跟grpc有关,但是不知道在哪里设置或说修改配置参数?谢谢!

针对 gRPC 没做流模式处理么? 这个要问 tidis 的作者了…

我怎么自己从代码中看出来呢?gRPC的流模式原理是什么?谢谢

Received message larger than max (9723284 vs. 4194304)

减少数据的大小试试…

估计是还不支持吧

减少数据,这个我不知道如何减少,理论上应该是可以,但是那样就相当于用不了了吧?

去 github 上提个issue

您能指点一下,在TiDB中是如何处理的吗?那个4194304正好是4M,应该是我缺少某个配置吧?TiDB不太可能只能传4M呀,谢谢!
另外这个4M的参数,我能在哪里看到不?谢谢

tidb 默认没有限制 4MB的…
参考这个文档…
https://docs.pingcap.com/zh/tidb/stable/tidb-limitations

你这是TiDB的,我这里出错是在TiKV客户端:

2023/01/04 16:19:48.937 +08:00 ERRO connection error TikvClient(Grpc(RpcFailure(RpcStatus { code: 8-RESOURCE_EXHAUSTED, message: "Received message larger than max (72327769 vs. 4194304)", details: [] })))

其中的TikvClient是这个项目tikv-client

所以这个问题要咨询作者了… 直接去github上提交issue了

嗯,已经提了,只是也想自己看看,能否把问题尽快搞清楚。
issue的位置:Received message larger than max (9612720 vs. 4194304

想搞清楚,只能自己跟源码了… :rofl:

嗯,这个时候确实需要读一下源码,只是还没有头绪。
PS: 从我粗浅的认识,觉得TiDB也是需要一个TiKV的客户端,和TiKV进行交互,只是TiDB用的go语言,而这里的客户端,用的Rust,原理上应该类似,另外,我这个4194304是一个最基本的尺寸吧,可惜我对这几个组件都太无知了。

这个应该代码里面的参数,暂时不能修改。不过你提交的 issue 产品团队已经收到了,有进展就会和你同步。感谢关注!