怎么弄明白,什么减慢了码头工人的速度?

时间:2016-11-27 19:11:14

标签: php macos performance docker symfony

我的问题如下 - 我在OSX上使用包含Redis,NginX,PHP 7和Unison的容器的Docker。映射到php容器我有Symfony 3.1.7的卷。

一切正常,但Symfony的“欢迎”页面平均需要约1.5秒的加载时间。同时没有泊坞窗的相同设置给我0.2秒的加载时间。与Symfony的控制台命令相同,所以,我想,这不是NginX的问题,Unison应该否定与Docker文件同步OSX问题相关的所有问题。

现在我已经没有想法我可以做些什么来加快速度,以及如何找出造成1.5秒延迟的原因。

我的第二个MBP也遇到了同样的问题,但这种事情并没有发生在同事的笔记本电脑上,这与我的相似,但我们无法找到两种设置之间的任何区别。

我的MBP上运行的一切都是2.5 GHz i5,8 Gb RAM和SSD。

Docker 1.12.3,OSX 10.12.1(Sierra)

搬运工-compose.yml:

mydockerbox-redis:
  image: phpdockerio/redis:latest
  container_name: mydockerbox-redis

mydockerbox-webserver:
  image: phpdockerio/nginx:latest
  container_name: mydockerbox-webserver
  volumes:
      - ..:/var/www/mydockerbox
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
  ports:
   - "80:80"
  links:
   - mydockerbox-php-fpm

unison:  
  image: leighmcculloch/unison:latest  
  environment:  
    - UNISON_WORKING_DIR=/unison  
  volumes:
    - ../mydockerbox:/var/www/mydockerbox
  ports:  
    - "5000:5000"

mydockerbox-php-fpm:
  build: .
  dockerfile: php-fpm/Dockerfile
  container_name: mydockerbox-php-fpm
  volumes_from:  
    - unison  
  volumes:
    - ./php-fpm/php-ini-overrides.ini:/etc/php/7.0/fpm/conf.d/99-overrides.ini
  links:
    - mydockerbox-redis

UPD这里是用于php-fpm容器的Dockerfile:

FROM phpdockerio/php7-fpm:latest

# Install selected extensions and other stuff
RUN apt-get update \
    && apt-get -y --no-install-recommends install  php7.0-mongodb php7.0-redis php7.0-igbinary \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*


WORKDIR "/var/www/mydockerbox"

2 个答案:

答案 0 :(得分:0)

我建议您使用docker-machine-driver-xhyve

  

xhyve / hyperkit(native macOS hypervisor.framework)的docker-machine / libmachine驱动程序插件

你可以简单地用brew安装(我希望你已经安装了docker& Co with brew,否则取消链接并用brew安装它们):

brew install docker-machine-driver-xhyve
sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

然后您可以创建一个泊坞机:

docker-machine create --driver xhyve --xhyve-experimental-nfs-share my-xhyve-docker-machine

并用它来运行你的容器

答案 1 :(得分:0)

首先,在php-fpm容器中对PHP性能进行基准测试(例如,使用this)并将其与同事的容器进行比较。

如果您发现性能相同/具有可比性,那么使用PHP性能分析工具来查找Symfony在生成"欢迎"页。这可能会识别瓶颈(可能是文件系统,与Redis容器的网络通信,DNS查找等)。

如果基准测试显示容器中的PHP本身运行较慢(我认为不太可能),那么在主机上运行基准测试。如果主机和php-fpm收件人的结果之间存在很大差异 - 这意味着docker引擎会限制资源并需要深度调整或重新安装。