报错内容是:
ERROR 1105 (HY000): other error for mpp stream: Code: 0, e.displayText() = DB::Exception: Receiver state: ERROR, error message: Exchange receiver meet error : Code: 0, e.displayText() = DB::Exception: Receiver state: ERROR, error message: Code: 0, e.displayText() = DB::Exception: EstablishDisaggregatedTask failed: Memory limit exceeded caused by 'RSS(Resident Set Size) much larger than limit' : process memory size would be 13.01 GiB for (attempt to allocate chunk of 135 bytes), limit of memory for data computing : 11.98 GiB.
但是我 TiFlash 节点内容是128G 的,应该不是内存不够导致的。另外也根据TiFlash 数据落盘调整了tiflash_mem_quota_query_per_node
的值,还是一样的错误。
“EstablishDisaggregatedTask failed” 这里是 tiflash write 节点在处理 EstablishDisaggregatedTask 的过程中出现错误。错误的直接原因是 ‘RSS(Resident Set Size) much larger than limit’,即 write node 的内存使用较高。
按照一般预期,write node 使用的内存应该不会打到这么高,可以用 clinic 收集并上传集群在执行查询出错时候的监控以及 tiflash compute, write 节点日志。再分析下。
https://docs.pingcap.com/zh/tidb/stable/clinic-user-guide-for-tiup#远程定位集群问题
write node节点 内存确实也有11G 左右了,不过write node 不承载主要的查询请求,内存使用量也这么大,是需要将所有 region 的状态信息放在内存里么?
另外有参数可以调整这个限制么?发现将tiflash_query_spill_ratio
这个参数调整成0.85
后,报错还是limit of memory for data computing : 11.98 GiB.
并没有跟着变大
将 write node 的内存调大到 32G,确实能执行下去了,但是换成其他错了。。
ERROR 1105 (HY000): other error for mpp stream: Code: 0, e.displayText() = DB::Exception: Receiver state: ERROR, error message: Code: 0, e.displayText() = DB::Exception: Receiver state: ERROR, error message: Exchange receiver meet error : Poco::Exception. Code: 1000, e.code() = 10018, e.displayText() = Exception: Region error NOT_FOUND_TIKV, e.what() = Exception, e.what() = DB::Exception,, e.what() = DB::Exception,
重试了一下,执行成功了,后续重复执行了几次,也都正常了。 这个报错内容是指?