【发布时间】:2016-02-10 01:15:12
【问题描述】:
在 PHP-7 docker 容器中运行 Laravel 5.2 时,我在 300ms - 400ms 中获得响应时间。
虽然我只是在同一个容器上回显 phpinfo(),但响应时间是 15ms - 50ms,这非常慢
【问题讨论】:
标签: php macos laravel docker boot2docker
在 PHP-7 docker 容器中运行 Laravel 5.2 时,我在 300ms - 400ms 中获得响应时间。
虽然我只是在同一个容器上回显 phpinfo(),但响应时间是 15ms - 50ms,这非常慢
【问题讨论】:
标签: php macos laravel docker boot2docker
为了其他通过 Google 偶然发现这个问题的人的利益,Docker for Mac 现在支持 user guided caching 用于卷。
不同的应用程序需要不同级别的一致性。满的 一致性有时是必不可少的,并且仍然是默认设置。然而, 支持临时不一致是可接受价格的情况 为了提高性能,Docker 17.04 CE Edge 包括新的 -v 选项的标志:
- 一致:完全一致。容器运行时和主机 始终保持对底座的相同视图。这是 默认,如上所述。
- cached:挂载主机的视图是 权威性。在主机上进行更新之前可能会有延迟 在容器中可见。
为我的 Laravel 应用启用缓存模式就像更新 docker-compose.yml 中的卷引用一样简单。
之前:
volumes:
- ./:/var/www
之后:
volumes:
- ./:/var/www:cached
进行了更改并重新创建了我的容器后,我发现性能与我对非虚拟化本地服务器的期望更加接近。以前一个简单的请求需要 1.3 秒才能完成,现在已经下降到 0.35 秒。尽管警告说主机更改可能不会立即在容器中可见,但我尚未注意到任何传播问题。
还有一个关于 Docker Mac FS performance 的持续 GH 问题,其中包含一些有用的注释。
【讨论】:
:cached 响应时间约为1.5 秒,有 :cached 约为0.4 秒。感谢您的提示!
好的,问题解决了。
在使用带有 VirtualBox 驱动程序的 Docker 1.10 和安装到主机系统(即 Boot2Docker VM 和 OSX)的卷的本地开发环境中,性能非常糟糕,如上所述 300ms - 600ms。
使用相同的配置而不安装卷20ms - 30ms 响应时间。我的假设是,由于 Laravel 在每次请求时都会加载大量文件,因此具有密集的磁盘 I/O,这会受到 VirtualBox 在主机和 VM 之间共享文件夹的方式的影响。
问题不是 Docker 或 Laravel,而是 VirtualBox VM 问题。
更新:
比较 docker 中的不同环境
注意:以下不包含artisan optimize --force或artisan config:cache
HHVM with artisan optimisations + unix sockets: 8ms - 12ms
PHP-7 FPM 带有工匠优化 + unix 套接字:38ms - 42ms
看看具有优化和 unix 套接字的 HHVM。速度非常快。
【讨论】:
config.vm.synced_folder ".", "/srv/web", type: "nfs", :mount_options => ['nolock,vers=3,udp,noatime,actimeo=1'] 起到了作用,但我不知道 Boot2Docker 用于将数据传递给 Virtualbox。