And*_*gan 5 php macos laravel docker boot2docker
在 PHP-7 docker 容器中运行 Laravel 5.2 时,我在300ms - 400ms.
这是非常慢的,尽管如果我只是phpinfo()在同一个容器上回显,响应时间15ms - 50ms是有人在 Docker 容器中使用 Laravel 遇到这些缓慢的响应时间吗?
为了让任何通过 Google 偶然发现这个问题的人受益,Docker for Mac 现在支持用户引导的卷缓存。
不同的应用程序需要不同级别的一致性。完全一致性有时是必不可少的,并且仍然是默认设置。但是,为了支持临时不一致是为提高性能而付出的可接受代价的情况,Docker 17.04 CE Edge 为 -v 选项包含了新标志:
- 一致:完全一致。容器运行时和主机始终保持相同的挂载视图。这是默认值,如上所述。
- cached:主机对挂载的看法是权威的。在主机上所做的更新在容器中可见之前可能会有延迟。
为我的 Laravel 应用启用缓存模式就像更新 docker-compose.yml 中的卷引用一样简单。
前:
volumes:
- ./:/var/www
Run Code Online (Sandbox Code Playgroud)
后:
volumes:
- ./:/var/www:cached
Run Code Online (Sandbox Code Playgroud)
进行了更改并重新创建了我的容器后,我看到性能更接近于我对非虚拟化本地服务器的期望。以前,一个简单的请求需要 1.3 秒才能完成,现在已降至 0.35 秒。尽管警告主机更改可能不会立即在容器中可见,但我还没有注意到任何传播问题。
还有一个关于Docker Mac FS 性能的持续 GH 问题以及一些有用的注释。
好的,问题解决了。
在使用带有 VirtualBox 驱动程序的 Docker 1.10 和安装到主机系统(即 Boot2Docker VM 和 OSX)的卷的本地开发环境中,性能非常糟糕,如上所述300ms - 600ms。
使用相同的配置,而无需安装卷20ms - 30ms响应时间。我的假设是,由于 Laravel 在每个请求上加载大量文件,因此具有密集的磁盘 I/O,因此受到 VirtualBox 在主机和虚拟机之间共享文件夹的方式的影响。
问题不是 Docker 或 Laravel,而是 VirtualBox VM 问题。
更新:
比较 docker 中的不同环境
注:以下均不带artisan optimize --force或artisan config:cache
HHVM with artisan optimisations + unix sockets: 8ms - 12ms
PHP-7 FPM与 artisan 优化 + unix 套接字:38ms - 42ms
查看具有优化和 unix 套接字的 HHVM。速度非常快。
| 归档时间: |
|
| 查看次数: |
6324 次 |
| 最近记录: |