You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker化WordPress环境多负载下数据库连接错误求助

高并发场景下WordPress容器频繁出现数据库连接错误(短暂自动恢复)

环境配置

  • 容器架构:
    • Nginx Proxy(jwilder/nginx-proxy)
    • WordPress + Apache + PHP 7.4(官方镜像自定义构建)
    • MySQL 5.7(官方镜像)
  • VPS参数:Ubuntu 22.04 Server LTS,4GB内存,2核vCPU
  • 业务类型:基于WooCommerce搭建的电商站点

问题现象

站点日常运行状态正常,但当打开约10个标签页同时刷新时,页面会弹出**"Error Establishing a Database Connection"**提示。此时所有容器均未崩溃,仍处于运行状态,等待几秒后页面可正常重新加载。

已尝试的排查优化

  1. 针对MySQL做了低内存参数调整,控制内存占用
  2. 降低Apache的mpm_prefork配置,减少进程数与子进程数
  3. 检查日志仅能看到数据库连接失败时的500错误,无其他异常信息
  4. 查阅近30个相关技术主题,未找到匹配的解决方案

docker-compose配置

version: '3.7'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    environment:
      - TRUST_DOWNSTREAM_PROXY=false
    volumes:
      - html:/usr/share/nginx/html
      - dhparam:/etc/nginx/dhparam
      - vhost:/etc/nginx/vhost.d
      - lets-certs:/etc/nginx/certs
      - ./conf.d/client_max_upload_size.conf:/etc/nginx/conf.d/client_max_upload_size.conf
    restart: always
    networks:
      net_external:
      web_internal:
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"

  phpmyadmin:
    image: phpmyadmin:latest
    environment:
        VIRTUAL_HOST: x
        LETSENCRYPT_HOST: x
        PMA_HOSTS: x
        MYSQL_ROOT_PASSWORD: x
        UPLOAD_LIMIT: 300M
    restart: unless-stopped
    depends_on:
      - nginx-proxy
    networks:
      - net_external
      - mysql
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: x
      MYSQL_USER: x
      MYSQL_PASSWORD: x
      MYSQL_ROOT_PASSWORD: x
    volumes:
      - mysql:/var/lib/mysql
      - ./mysql/my.cnf:/etc/my.cnf
    restart: always
    networks:
      - mysql
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"

  wordpress:
    environment:
      WORDPRESS_DB_HOST: x
      WORDPRESS_DB_USER: x
      WORDPRESS_DB_PASSWORD: x
      WORDPRESS_DB_NAME: x
      WORDPRESS_CONFIG_EXTRA: |
        define('AUTOMATIC_UPDATER_DISABLED', true);
      VIRTUAL_HOST: x
      LETSENCRYPT_HOST: x
    build:
      context: .
      dockerfile: ./wordpress-build/Dockerfile
    volumes:
      - ./prod:/var/www/html
      - './uploads.ini:/usr/local/etc/php/conf.d/uploads.ini'
    restart: always
    depends_on:
      - mysql
    networks:
      - web_internal
      - prod_mysql
      - wp_external
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
        max-file: "10"

volumes:
  html:
  mysql:
  dhparam:
  vhost:

networks:
  web_internal:
    internal: true
  mysql:
    internal: true
  net_external:
    external: true
  wp_external:
    external: true

恳请各位提供排查思路或解决方案。

内容的提问来源于stack exchange,提问作者realpclaudio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:28:17