客户端开越多网页 1panel 后台 Apache2进程越多 占内存

结论

通过 docker ps 输出确认,内存占用过高的 apache2 进程来自 wordpress:6.9.1 容器。该官方镜像默认基于 Apache + PHP 构建,这就是你开网页越多、进程越多、内存越满的根本原因。

关键证据

容器信息 核心特征 结论
镜像 wordpress:6.9.1 官方 WordPress 镜像(非 -fpm 标签)默认内置 Apache 服务
端口 0.0.0.0:8080->80/tcp 容器内 Apache 占用 80 端口,宿主机映射 8080 端口对外提供服务
进程 容器内运行 apache2 你在 top 中看到的 apache2 进程均属于此容器,随请求数生成子进程

解决方案(按优先级,从临时优化到彻底根治)

针对 2GB 内存服务器,推荐采用 方案三(迁移重构),这是最适配 1Panel 生态且最省内存的方式。

方案一:临时优化容器内 Apache(应急缓解)

无需重建容器,直接进入容器修改配置,限制进程数以减少内存占用。
  1. 进入 WordPress 容器
    bash
    运行
    docker exec -it 1Panel-wordpress-yHZZ /bin/bash
    
  2. 编辑 Apache MPM 配置文件
    bash
    运行
    vi /etc/apache2/mods-available/mpm_prefork.conf
    
  3. 修改为以下低内存配置
    apache
    <IfModule mpm_prefork_module>
        StartServers            2
        MinSpareServers         1
        MaxSpareServers         3
        MaxRequestWorkers       8
        MaxConnectionsPerChild  500
    </IfModule>
    
  4. 重启容器内 Apache 生效
    bash
    运行
    apache2ctl restart
    exit
    

方案二:修改容器启动参数(限制容器内存)

通过 Docker 限制该容器的最大内存使用,防止其耗尽宿主机内存。
  1. 停止容器
    bash
    运行
    docker stop 1Panel-wordpress-yHZZ
    
  2. 修改容器配置,限制内存为 512MB
    bash
    运行
    docker update --memory 512m --memory-swap 768m 1Panel-wordpress-yHZZ
    
  3. 启动容器
    bash
    运行
    docker start 1Panel-wordpress-yHZZ
    

方案三:迁移至 1Panel 原生站点(彻底根治,推荐)

利用 1Panel 已有的 OpenResty + PHP-FPM 环境,重建 WordPress 站点,彻底抛弃 Apache 容器,内存占用可降低 50% 以上。
  1. 备份现有 WordPress 数据
    bash
    运行
    # 备份网站文件
    docker cp 1Panel-wordpress-yHZZ:/var/www/html /root/wordpress-backup
    # 备份数据库(使用容器内的 MySQL 信息)
    mysqldump -u root -p -h 127.0.0.1 -P 3306 wordpress > /root/wordpress-db.sql
    
  2. 在 1Panel 新建站点
    • 进入 1Panel → 网站创建网站
    • 运行环境选择:OpenResty + PHP-FPM(匹配已安装的 1panel-php-fpm:8.4.13)。
    • 数据库选择已有的 mysql:8.4.8,创建对应数据库。
  3. 恢复数据
    • /root/wordpress-backup 内的文件上传至新站点的网站根目录。
    • 导入 /root/wordpress-db.sql 至新建的数据库。
  4. 停止并删除旧 WordPress 容器
    bash
    运行
    docker stop 1Panel-wordpress-yHZZ
    docker rm 1Panel-wordpress-yHZZ
    
  5. 修改域名解析
    • 若原站点通过 8080 端口访问,需将新站点端口改为 80,或在 1Panel 中配置反向代理,实现通过域名直接访问。

验证效果

执行优化 / 迁移后,运行以下命令确认:
bash
运行
# 查看 apache2 进程是否消失(方案三)或数量减少(方案一/二)
top -o %MEM | grep apache2
# 查看内存整体使用情况
free -h
阅读剩余
THE END