【发布时间】:2022-11-28 14:11:04
【问题描述】:
我目前正在使用 vagrant 操作的 VirtualBox 设置来开发我的 Web 服务。由于我想移动到新的 M1 Mac,我需要不幸地更改此设置。
我现在已经建立了一个 docker 环境,现在一切正常——除了性能。特别是在运行 PHPUnit 测试时,性能非常糟糕,实际上无法使用。一个简单地检查 sql 语句是否对 mysql 数据库有效的测试套件在 docker 设置上需要 31.44 秒,而在旧设置上它在 5 秒内完成。
在过去的几天里,我读了很多关于容器和主机之间文件共享问题的文章,到目前为止我已经尝试了一些东西,但实际上性能没有任何改变(甚至一点都让我感到奇怪) :
- 使用 docker-sync
- 将 mysql 存储更改为命名卷
- 试图分配更多的 CPU/内存
但是经过 8 小时的尝试,我仍然看到这个测试套件的错误数字相同,它的范围在 28 到 38 秒之间,而不是 5 秒。
我也不确定究竟是什么导致设置缓慢 - 是数据库还是 PHP 本身?有人知道我如何才能更接近实际原因吗?
这是我的 docker-compose.yml:
version: "3"
services:
mysql:
container_name: "mysql"
build: docker/mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=admin
- MYSQL_PASSWORD=password
ports:
- '3306:3306'
volumes:
- mysql-data:/bitnami/mysql/data
- ./docker/mysql/import:/import:delegated
php:
container_name: "php"
build: docker/php
volumes:
- ../App:/app:delegated
- ./docker/php/ini/php.ini:/opt/bitnami/php/etc/conf.d/php.ini:ro
environment:
- DATABASE_HOST=host.docker.internal
- ENVIRONMENT=docker
apache:
container_name: "apache"
image: bitnami/apache:2.4
ports:
- '80:8080'
- '443:8443'
depends_on:
- php
volumes:
- ../App:/app:delegated
- ./docker/apache/my_vhost.conf:/vhosts/my_vhost.conf:ro
- ./docker/apache/certs:/certs
environment:
- DATABASE_HOST=host.docker.internal
- ENVIRONMENT=docker
# --- PhpMyAdmin latest
# Acccess via http://127.0.0.1:81 or https://127.0.0.1:8143
phpmyadmin:
container_name: "phpmyadmin"
image: bitnami/phpmyadmin:latest
depends_on:
- mysql
ports:
- '81:8080'
- '8143:8443'
environment:
- DATABASE_HOST=host.docker.internal
volumes:
mysql-data:
driver: local
如果您能与我分享关于如何更接近这个 docker 设置如此缓慢的原因的所有想法,我将非常高兴。由于我们的整个测试套件现在运行一个多小时,这绝对是不行的,并且肯定会阻止我购买新的 M1 mac。但由于它们是未来,我绝对需要一个没有虚拟机进行开发的长期解决方案。
应要求提供的附加信息: 我还没有 M1,目前正在我的旧系统上进行测试。因此,我在相同的 2.8 GHz 双核 Intel Core i5 和 8GB RAM Mac OS 12.3 Monterey 上比较 docker 和 VirtualBox。 Docker 有 2 个 CPU 和 4GB 内存,而(更快的)VirtualBox 设置只有 1 个 CPU 和 1GB 内存。所以它的装备更差,但在同一台机器上速度更快。
可以在https://pastebin.com/8pq1aeGR 找到 MySQL 统计信息。
【问题讨论】:
-
请提供更多信息请求。一套来自 M1 Mac,一套来自旧设置。 RAM 大小、核心数、MySQL 主机服务器上的任何 SSD 或 NVME 设备?在 pastebin.com 上发布并共享链接。从您的 SSH 登录根目录,文本结果:A) SELECT COUNT(*) FROM information_schema.tables; B) 显示全局状态;至少 24 小时正常运行后 C) 显示全局变量; D) 显示完整的流程列表; E) 状态;不显示状态,只是状态; G) 显示引擎创新状态;为服务器工作负载调优分析提供建议。
-
@WilsonHauck 我还没有 M1,我目前正在我的旧系统上进行测试。因此,我在相同的 2.8 GHz 双核 Intel Core i5 和 8GB RAM Mac OS 12.3 Monterey 上比较 docker 和 VirtualBox。 Docker 有 2 个 CPU 和 4GB 内存,而(更快的)VirtualBox 设置只有 1 个 CPU 和 1GB 内存。所以它的装备更差,但在同一台机器上速度更快。我将在接下来的几分钟内发布 SQL 结果。
-
@WilsonHauck 这里是新 docker 设置的结果:pastebin.com/8pq1aeGR。您还想查看旧设置的结果以进行比较吗?到目前为止,服务器没有 24 小时更新,更不用说了。
-
是的,一组来自旧设置的数据也可以进行比较。最好在每个正常运行 24 小时后。
-
大约 3 小时前发布在 pastebin.com 上的数据不再可用。请查看个人资料以获取联系信息并取得联系。
标签: php mysql docker docker-compose containers