doris2.1.8连接报错ERROR 1203 (42000): Reach limit of connections解决办法
客户环境登录doris报错:
ERROR 1203 (42000): Reach limit of connections
这个报错原因是很明显了,用户的连接数超过了最大限制,但是解决却花费了不少时间,主要是通过AI搜索出来的都是错误的,不论是deepseek还是豆包都不行,说明doris的相关文档并没有被AI训练到或者用的太少了?
下面是AI的错误方法:
错误的方法大体是:
1.查看fe的参数,用show variables like这种方法就是错的,应该用SHOW FRONTEND CONFIG like '%max_connections%'
2.参数名称错误,doris fe的最大连接数限制是qe_max_connection而不是max_connections,这和mysql是不同的
3.就算配置了qe_max_connection并不起效果
下面是正确的方法:
首先qe_max_connection配置了全局的每个fe的最大连接数限制,但是针对每个用户,默认还会有一个资源的限制,其中就包括了cpu,负载,连接数等等的限制,而默认每个用户的连接数只有100
因此解决步骤如下:
1.如果是普通用户的连接超限了,可以用root登录,如果是root超限了,可以使用admin用户登录,默认admin用户是没有密码的
[dsg@dsgsync-sjzc ~]$ mysql -h192.168.11.230 -P9030 -uadmin
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 25576
Server version: 5.7.99 Doris version doris-2.1.8-rc01-52396fbc88Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
登录之后查看qe_max_connection参数,以及当前的连接数信息:
MySQL [ods_his_portal56_his]> show frontend config like '%max_conn%';
+-------------------+-------+------+-----------+------------+---------+
| Key | Value | Type | IsMutable | MasterOnly | Comment |
+-------------------+-------+------+-----------+------------+---------+
| qe_max_connection | 4096 | int | false | false | |
+-------------------+-------+------+-----------+------------+---------+
1 row in set (0.01 sec)MySQL [ods_his_portal56_his]> SELECT user, COUNT(*) AS connections FROM information_schema.processlist GROUP BY user;
+------+-------------+
| user | connections |
+------+-------------+
| root | 100 |
| dsg | 54 |
+------+-------------+
2 rows in set (0.09 sec)MySQL [ods_his_portal56_his]> SELECT COUNT(*) AS total_connections FROM information_schema.processlist;
+-------------------+
| total_connections |
+-------------------+
| 154 |
+-------------------+
1 row in set (0.01 sec)
通过上面的查询可以看到,fe的总连接数限制是4096,当前总的连接数只有154,明显没有超过,但是root的连接数有100,达到了默认的最大限制,可以用下面命令查看root用户的资源限制
MySQL [ods_his_portal56_his]> SHOW PROPERTY FOR 'root';
+-------------------------------------+--------+
| Key | Value |
+-------------------------------------+--------+
| allow_resource_tag_downgrade | false |
| cpu_resource_limit | -1 |
| default_load_cluster | |
| default_workload_group | normal |
| exec_mem_limit | -1 |
| insert_timeout | -1 |
| max_query_instances | -1 |
| max_user_connections | 100 |
| parallel_fragment_exec_instance_num | -1 |
| query_timeout | -1 |
| resource_tags | |
| sql_block_rules | |
+-------------------------------------+--------+
12 rows in set (0.00 sec)
2.修改参数配置
如果是fe最大连接数超过限制了,那么必须修改qe_max_connection参数,此参数为静态参数,需要修改fe.conf,再重启fe生效
如果是其它的一些动态参数,则可以使用ADMIN SET FRONTEND CONFIG ("fe_config_name" = "fe_config_value");命令进行修改
如果fe最大连接数限制正常,是用户的属性限制了,则需要使用set property for 命令进行修改
MySQL []> SET PROPERTY FOR 'root' 'max_user_connections' = '1000';MySQL []> SHOW PROPERTY FOR 'root';
+-------------------------------------+--------+
| Key | Value |
+-------------------------------------+--------+
| allow_resource_tag_downgrade | false |
| cpu_resource_limit | -1 |
| default_load_cluster | |
| default_workload_group | normal |
| exec_mem_limit | -1 |
| insert_timeout | -1 |
| max_query_instances | -1 |
| max_user_connections | 1000 |
| parallel_fragment_exec_instance_num | -1 |
| query_timeout | -1 |
| resource_tags | |
| sql_block_rules | |
+-------------------------------------+--------+
目前针对用户的限制还没有一个默认的修改项,因此只能针对每个用户进行单独修改,如果新增了用户不要忘记创建的时候一并修改了
总结:
1.查看fe的参数使用SHOW FRONTEND CONFIG like 命令,而不是show variables,show variables只是查看会话的变量
2.修改fe的参数有种方法,针对静态参数只能修改fe.conf再重启fe,而针对动态参数,可以使用ADMIN SET FRONTEND CONFIG ("fe_config_name" = "fe_config_value");
命令进行修改,确定参数是否是动态还是静态参数,查看IsMutable列,false表示静态,true为动态
3. doris默认对用户有资源限制,不能统一修改,只能一个一个用户进行修改,使用show property命令查看用户的属性,例如:
SHOW PROPERTY FOR 'root';
使用set property命令进行设置,例如:
SET PROPERTY FOR 'root' 'max_user_connections' = '1000';