

























开发环境+本地部署mysql,参考:https://www.cnblogs.com/1285026182YUAN/p/21335059
环境:.net9+efcore9 + mysql8
测试环境:mysql8 ,docker部署
项目:.net9,docker 部署
测试工具:jmeter https://www.cnblogs.com/1285026182YUAN/p/19697195
测试需求:500并发
一. mysql 调整
1. docker-compose
version: '3.8'
services:
mysql8:
image: mysql:8.0
container_name: mysql8
restart: no
ports:
- "3308:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- D:\DockerMapping\data_mysql\data:/var/lib/mysql
# (可选)挂载自定义配置文件目录
- D:\DockerMapping\data_mysql\config:/etc/mysql/conf.d
docker-compose up -d mysql8
2. 配置文件
创建文件:D:\DockerMapping\data_mysql\config\my.cnf
注意,文件要 只读 模式。
主要配置:
# 最大连接数(根据应用负载调整)
max_connections = 500
# InnoDB 缓冲池大小(建议设为物理内存的70%~80%,此处示例为512M,请按实际调整)
innodb_buffer_pool_size=10G
全部配置:
[mysqld]
# -------------------- 基础设置 --------------------
# 服务端默认字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 客户端连接默认字符集(影响连接会话)
init_connect = 'SET NAMES utf8mb4'
# 时区设置(设为东八区,可根据需要调整)
default-time-zone = '+8:00'
# -------------------- 连接与性能 --------------------
# 最大连接数(根据应用负载调整)
max_connections = 500
# 连接超时(秒)
connect_timeout = 10
# 等待超时(秒)
wait_timeout = 28800
interactive_timeout = 28800
# 临时表大小(影响复杂查询性能)
tmp_table_size = 64M
max_heap_table_size = 64M
# -------------------- 日志与错误 --------------------
# 通用查询日志(关闭,生产环境建议关闭,开发可开启)
# general_log = 0
# general_log_file = /var/lib/mysql/mysql-general.log
# 慢查询日志(开启,便于性能调优)
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/mysql-slow.log
long_query_time = 2 # 超过2秒的查询被记录
# 错误日志(默认开启,路径由数据目录控制)
log_error = /var/lib/mysql/mysql-error.log
# -------------------- 存储引擎 --------------------
# 默认存储引擎
default-storage-engine = InnoDB
# InnoDB 缓冲池大小(建议设为物理内存的70%~80%,此处示例为512M,请按实际调整)
innodb_buffer_pool_size = 10G
# 日志文件大小(影响恢复速度)
innodb_log_file_size = 128M
innodb_log_buffer_size = 16M
# -------------------- 安全与兼容 --------------------
# 表名大小写不敏感(1表示不敏感,0表示敏感,Windows默认1,Linux默认0)
# 注意:此参数需要初始化前设置,且一经设定不可随意更改!
lower_case_table_names = 1
# SQL模式(保留部分严格模式,去除 ONLY_FULL_GROUP_BY 等可能引起兼容性问题)
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# -------------------- 其他 --------------------
# 允许最大数据包(影响导入导出大文件)
max_allowed_packet = 256M
# 连接数限制保护
max_connect_errors = 1000
3. 重启服务
docker restart mysql8
注:
MySQL 服务启动时会按照以下顺序依次读取配置文件,后读取的文件会覆盖先读取的文件中相同的参数:
3. 校验配置
docker exec -it mysql8 /bin/bash
mysql -u root -p;
123456
-- 查询数据库允许最大连接数
SHOW VARIABLES LIKE 'max_connections';
-- 查询
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
-- 查询 使用测试过程中 实际的连接数
SHOW STATUS LIKE 'Threads_connected';

二. net9 项目相关配置
参考:https://www.cnblogs.com/1285026182YUAN/p/21335059
三. 这里mysql 虽然设置了10G内存,但 docker-desktop 并没有分配到很多,默认2G,需要调整配置
这里自行查吧,如果是linux 安装版的docker 也注意一下


end.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。