问题

报错:Reach limit of connections
排查过程
账号:srv_kfcbp_prd
检查服务器参数,配置如下:
ini
max_user_connections=100 #用户允许的最大连接数为100
max_query_instances=-1 #单个用户同一时刻可使用的查询 instance 个数,-1表示不限制
default_max_query_instances=-1 #单个用户同一时刻可使用的查询 instance 个数的默认值,-1表示不限制
qe_max_connection=1024 #每个 FE 的最大连接数
wait_timeout=28800 #空闲连接的连接时长,默认为28800,建议调小,否则可能导致有一些连接客户端虽然释放了,但是服务端未释放。
建议
wait_timeout 参数调整(业务侧给出建议值):
set global wait_timeout = 300;
由于出现"Reach limit of connections" 未及时第一时间检查配置项,未能获取报错时刻的连接信息。再出现类似问题时可用以下命令检查连接信息:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Sleep' and user = 'srv_kfcbp_prd';
如果连接状态都是 sleep 则说明需要调小 wait_timeout
参数,否则需要调大max_user_connections
值。
wait_timeout
和 max_user_connections
需要业务侧给出建议值。