UNPKG

mysql-rest

Version:

One command to generate REST APIs for any MySql database, support multi databases

173 lines (137 loc) 5.55 kB
# 达梦数据库连接配置参数 本项目已支持通过命令行参数配置达梦数据库连接池的各种属性。 ## 新增的命令行参数 ### 基本连接参数 - `--dialect <type>`: 数据库类型,支持 `mysql``tidb``dameng` - `-h, --host <host>`: 数据库主机地址 - `-o, --port <port>`: 数据库端口号 - `-u, --user <username>`: 数据库用户名 - `-p, --password <password>`: 数据库密码 - `--disableAccessLog`: 禁用HTTP访问日志,生产环境推荐 (默认: false) ### 达梦数据库连接池专用参数(带dm前缀) #### 连接池大小配置 - `--dmPoolMax <number>`: 连接池最大连接数 (默认: 16) - `--dmPoolMin <number>`: 连接池最小连接数 (默认: 8) #### 超时配置 - `--dmPoolTimeout <seconds>`: 连接空闲超时时间,单位秒,0表示永不关闭 (默认: 60) - `--dmQueueTimeout <milliseconds>`: 队列中请求的超时时间,单位毫秒,0表示永久等待 (默认: 60000) #### 队列配置 - `--dmQueueMax <number>`: 获取连接请求等待队列的最大长度,-1表示无限制 (默认: 500) - `--dmQueueRequests`: 连接池达到最大连接数后,是否将后续请求放入等待队列 (默认: true) #### 连接验证配置 - `--dmTestOnBorrow`: 连接获取前是否验证有效性 (默认: false) - `--dmValidationQuery <sql>`: 连接有效性检查使用的SQL语句 (默认: 'select 1;') #### 其他配置 - `--dmPoolAlias <name>`: 连接池别名 (可选) ## 使用示例 ### 基本用法 ```bash # 使用默认参数连接达梦数据库 xmysql --dialect dameng -h localhost -o 5236 -u SYSDBA -p SYSDBA ``` ### 自定义连接池参数 ```bash # 配置更大的连接池和自定义超时时间 xmysql --dialect dameng -h 192.168.1.100 -o 5236 -u SYSDBA -p SYSDBA \ --dmPoolMax 30 --dmPoolMin 10 --dmPoolTimeout 120 --dmQueueMax 1000 ``` ### 启用连接验证 ```bash # 启用连接前验证,使用自定义验证查询 xmysql --dialect dameng -h localhost -o 5236 -u SYSDBA -p SYSDBA \ --dmTestOnBorrow --dmValidationQuery "select sysdate from dual" ``` ### 完整配置示例 ```bash # 使用所有可用参数的完整配置 xmysql --dialect dameng -h localhost -o 5236 -u SYSDBA -p SYSDBA \ --dmPoolAlias "main-pool" \ --dmPoolMax 25 --dmPoolMin 5 \ --dmPoolTimeout 300 --dmQueueTimeout 30000 \ --dmQueueMax 2000 --dmQueueRequests \ --dmTestOnBorrow --dmValidationQuery "select 1 from dual" ``` ### 生产环境配置 ```bash # 生产环境推荐配置(关闭访问日志,高并发优化) xmysql --dialect dameng -h localhost -o 5236 -u SYSDBA -p SYSDBA \ --dmPoolMax 250 --dmPoolMin 50 --dmPoolTimeout 60 \ --dmQueueMax 20000 --dmQueueTimeout 60000 \ --dmTestOnBorrow --dmValidationQuery "select 1 from dual" \ --disableAccessLog ``` ## 配置对照表 | 命令行参数 | PoolAttributes 接口属性 | 默认值 | 说明 | |-----------|------------------------|--------|------| | --dmPoolAlias | poolAlias | - | 连接池别名 | | --dmPoolMax | poolMax | 16 | 最大连接数 | | --dmPoolMin | poolMin | 8 | 最小连接数 | | --dmPoolTimeout | poolTimeout | 60 | 连接闲置超时(秒) | | --dmQueueMax | queueMax | 500 | 队列最大长度 | | --dmQueueRequests | queueRequests | true | 是否队列请求 | | --dmQueueTimeout | queueTimeout | 60000 | 队列超时(毫秒) | | --dmTestOnBorrow | testOnBorrow | false | 连接前验证 | | --dmValidationQuery | validationQuery | 'select 1;' | 验证查询SQL | ## 注意事项 1. 这些参数仅在 `--dialect dameng` 时生效 2. 所有数值参数都会被自动转换为相应的数据类型 3. 布尔参数(如 `--dmTestOnBorrow``--dmQueueRequests`)只需指定即表示启用 4. 如果不指定 `--dmPoolAlias`,则不会在连接配置中包含该属性 5. 连接字符串格式:`dm://username:password@host:port` 6. 使用 `dm` 前缀是为了避免与未来可能的MySQL连接池参数冲突 ## 查看帮助 ```bash xmysql --help ``` 这将显示所有可用的命令行参数及其说明。 ## 故障排除 ### 连接池队列已满错误 [20016] 如果遇到 `[20016] 连接池等待队列已满` 错误,说明当前配置无法处理高并发请求。 #### 问题原因 - 连接池所有连接都在使用中 - 等待队列达到最大长度限制 - 并发请求超过了系统处理能力 #### 解决方案 ##### 1. 增加队列大小(立即生效) ```bash # 将队列大小从 15000 增加到 50000 --dmQueueMax 50000 ``` ##### 2. 增加连接池大小(需要数据库支持) ```bash # 增加连接池大小 --dmPoolMax 500 --dmPoolMin 100 ``` ##### 3. 调整超时时间 ```bash # 减少连接闲置超时,加快连接释放 --dmPoolTimeout 30 # 减少队列等待超时,快速失败 --dmQueueTimeout 30000 ``` ##### 4. 高并发优化配置示例 ```bash # 针对队列已满问题的优化配置 /opt/mysql-rest/mysql-rest-$(uname -m) \ -r 0.0.0.0 -n 55000 \ -h 127.0.0.1 -o 5236 \ --dialect dameng -u SYSDBA -p @WSX3edc \ --dmPoolMax 500 --dmPoolMin 100 \ --dmPoolTimeout 30 \ --dmQueueMax 50000 --dmQueueTimeout 30000 \ --dmTestOnBorrow --dmValidationQuery "select 1 from dual" ``` ##### 5. 分阶段调优方法 ```bash # 第一步:仅增加队列大小 --dmQueueMax 30000 # 第二步:如果仍有问题,增加连接池 --dmPoolMax 400 --dmPoolMin 80 # 第三步:优化超时设置 --dmPoolTimeout 45 --dmQueueTimeout 45000 ``` #### 监控建议 - 监控连接池使用率 - 监控队列等待时间 - 监控数据库连接数 - 设置告警阈值