吴晓阳
发布于 2026-03-25 / 3 阅读
0
0

mysql8.4高并发配置

[mysqld]
# ================= 最小化高并发调整 (仅改这 4 项) =================

# 1. 禁用 DNS 解析 (必改!防止连接延迟和超时)
# 默认是开启的,高并发下必须关闭,否则每个连接都要查域名,极慢。
skip-name-resolve = 1

# 2. 最大连接数 (根据需求调整)
# 默认是 151,高并发下远远不够。
# 建议值:2000 - 5000 (取决于你的内存大小,每连接约消耗 0.5-1MB)
max_connections = 2000

# 3. InnoDB 缓冲池大小 (最关键的性能参数)
# 默认通常只有 128M,对于生产环境太小了。
# ⚠️ 请根据你的服务器内存修改下面的值:
# 规则:专用数据库服务器 = 物理内存的 70% ~ 80%
# 示例:
# 4G 内存  -> 设置 3G
# 8G 内存  -> 设置 6G
# 16G 内存 -> 设置 12G
# 32G 内存 -> 设置 24G
innodb_buffer_pool_size = 2G

# 4. 缓冲池实例数 (配合上面的大小使用)
# 默认是 1。当缓冲池大于 1G 时,建议按每 1G 设 1 个实例,减少锁竞争。
# 如果上面设置了 12G,这里就填 12。最大不超过 64。
innodb_buffer_pool_instances = 2

# ================= 其他保持默认即可 =================
# MySQL 8.4 的默认值在日志写入、线程并发等方面已经比较优化,
# 除非有极端特殊需求,否则不需要动 innodb_flush_log_at_trx_commit 等参数,
# 以保持数据的最安全性(默认是双一安全)。
  mysql:
    image: mysql:8.4
    container_name: mysql
    ports:
      - 3306:3306
    restart: unless-stopped
    privileged: true
    environment:
      MYSQL_ROOT_HOST: "%"
      MYSQL_DATABASE: admin
      MYSQL_ROOT_PASSWORD: 数据库密码
      TZ: Asia/Shanghai
    volumes:
      - ./mysql/mysql:/var/lib/mysql
      - ./mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'skip_name_resolve';

评论