YMatrix 性能常见问题

本文档记录 YMatrix 常见性能优化相关问题。

1 Java 压测报 Connection timed out


JDBC 查询压力测试,并发 50,连接池采用阿里的 druid。2.5 分钟内响应时间平稳,之后响应时间变长,Master 开始出现如下错误: ERROR "failed to acquire resources on one or more segments", "could not connect to server: Connection timed out" Segment 无 error/panic log

问题分析

分布式数据库会有大量的 TCP/UDP 数据传输,每次传输都会使用不同的端口号,这些端口号或连接在 OS 看来都是一次路由(连接 conn),系统参数 nf_conntrack_max 的意思是 OS 最多可以同时维护路由信息的个数。因为我们的多台虚拟机在一个物理机上,虚拟网络用的应该是 NAT,这样当大量并发查询同时来的时候,会导致虚拟路由信息暴增,可能在短时间内超过 nf_conntrack_max 限制,进而导致网卡主动丢弃掉来不及处理的 package。这也可以解释之前一段时间内并发查询越大越容易发生丢包的现象。

解决方案

修改内核参数:

sudo sysctl net.netfilter.nf_conntrack_buckets=262144
sudo sysctl net.netfilter.nf_conntrack_max=1048576

2 SQL查询 motion 耗时高


查询执行计划中发现 motion 开销大。

问题分析

环境为云环境,云环境对 UDP 处理低效,或导致 UDF 延迟高或丢包概率高,间接导致 UDF 数据传输时间变长,用户日志级别设置为 debug5,大量 log 输出的过程中会影响 UDP 传输效率。

解决方案

切换 TCP interconnect 开启 ic proxy 调整 log Level