响应时间慢:Docker容器中的Laravel 5.2

时间:2016-02-10 01:15:13

标签: php macos laravel docker boot2docker

在PHP-7泊坞窗容器中运行Laravel 5.2时,我在300ms - 400ms获得响应时间。

虽然如果我只是在同一个容器上回显phpinfo(),响应时间为15ms - 50ms,那么在Docker容器中使用Laravel的任何人都会遇到这些响应时间较慢的情况,这是非常慢的吗? / p>

2 个答案:

答案 0 :(得分:4)

好的,问题解决了。

在使用Docker 1.10和VirtualBox驱动程序以及安装到主机系统(即Boot2Docker VM和OSX)的卷的本地开发环境中,性能令人难以置信,如上所述300ms - 600ms

使用相同的配置,而不会安装卷20ms - 30ms响应时间。我的假设是,由于Laravel在每个请求上加载了大量文件,因此会受到密集的磁盘I / O,这会受到VirtualBox在主机和VM之间共享文件夹的影响。

问题不是Docker或Laravel,它是VirtualBox VM问题。

更新:

比较泊坞窗中的不同环境

注意:以下内容没有artisan optimize --forceartisan config:cache

  • HHVM 13ms - 31ms(TCP端口9000)
  • HHVM 12ms - 22ms(Unix套接字)
  • PHP-7 FPM 42ms - 73ms(TCP端口9000)
  • PHP-7 FPM 38ms - 55ms(Unix套接字)

哇...!

<强> HHVM with artisan optimisations + unix sockets: 8ms - 12ms

PHP-7 FPM ,工匠优化+ unix套接字:38ms - 42ms

使用优化和unix套接字查看HHVM。它非常快。

答案 1 :(得分:0)

为了让通过Google偶然发现此问题的其他任何人的利益,Docker for Mac现在支持user guided caching卷。

  

不同的应用程序需要不同级别的一致性。充分   一致性有时是必不可少的,并且仍然是默认值然而,   支持临时不一致是可接受的价格的情况   为了支付改进的性能,Docker 17.04 CE Edge包括新的   -v选项的标志:

     
      
  • 一致:完全一致。容器运行时和主机   始终保持相同的山峰视图。这是   默认,如上所述。
  •   
  • 缓存:主机的mount视图是   权威性。在主机上进行更新之前可能会有延迟   在容器中可见。
  •   

为我的Laravel应用启用缓存模式就像更新docker-compose.yml中的卷引用一样简单。

在:

    volumes:
        - ./:/var/www

之后:

    volumes:
        - ./:/var/www:cached

进行了更改并重新创建了我的容器后,我发现性能与我对非虚拟化本地服务器的期望更加匹配。以前一个简单的请求需要花费1.3秒来完成,并且下降到0.35秒。尽管警告说主机更改可能无法在容器中立即显示,但我还没有发现任何传播问题。

还有一个关于Docker Mac FS performance的GH问题,还有一些有用的注释。