如何修改docker-compose配置将MySQL最大连接数提升至10000
MySQL 8.0 容器最大连接数修改方案
直接在docker-compose的db服务配置中添加启动参数即可,不需要额外挂载自定义my.cnf配置文件,具体修改点如下:
- 给
db服务新增command配置,指定mysqld启动参数--max_connections=10000 - 给
db服务新增ulimits配置,调大容器的文件打开数上限,避免10000连接场景下因文件句柄不足出现连接报错 - 修正原配置的端口映射错误:MySQL官方8.0镜像默认内部监听端口为3306,原配置写的
3311:3311映射无效,需改为3311:3306;同时hf_run服务和db同属一个docker网络,内部通信走容器内部端口,因此DB_PORT环境变量需要填3306,不是宿主机映射的3311端口
修改完成后的完整docker-compose.yml配置如下:
version: '3.3' services: db: image: mysql:8.0 cap_add: - SYS_NICE restart: always # 新增启动参数指定最大连接数 command: mysqld --max_connections=10000 # 新增ulimits配置调大文件句柄上限 ulimits: nofile: soft: 65535 hard: 65535 environment: - MYSQL_DATABASE=high_frequency - MYSQL_ROOT_PASSWORD=XXX ports: # 修正端口映射,格式为 宿主机端口:容器内部端口 - '3311:3306' volumes: - db:/var/lib/mysql hf_run: container_name: hf_run build: . command: ./main.py -r run_docker restart: on-failure:50 depends_on: - db ports: - 81:81 environment: DB_HOST: db # 容器内部通信使用MySQL默认内部端口3306 DB_PORT: 3306 DB_USER: root DB_PASSWORD: XXX DB_NAME: high_frequency links: - db volumes: db: driver: local
配置生效验证:启动容器后,执行
docker exec -it <db容器ID> mysql -uroot -pXXX -e "show variables like 'max_connections';",返回结果中Value值为10000即代表配置生效。
内容的提问来源于stack exchange,提问作者Raginald Avto
相关产品推荐
相关产品推荐

