首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头-缓存安装的卷同步延迟

码头-缓存安装的卷同步延迟
EN

Stack Overflow用户
提问于 2017-12-02 22:07:23
回答 1查看 2.9K关注 0票数 1

我正在macOS上使用docker构建一个本地开发环境。我们有多个应用程序是用php编写的,并与Symfony一起运行。代码通过卷附加到容器上。与linux主机相比,我遇到了非常糟糕的性能。

事实证明,这个问题是由基于osxfs的挂载卷引起的,osxfs是一种共享文件系统解决方案,仅限于Docker for Mac。

这个问题在这里很好地解释了:https://blog.docker.com/2017/05/user-guided-caching-in-docker-for-mac/

引入装入卷的缓存模式后,性能有了很大的提高。但是,它允许在主机上的更新出现在容器中之前出现一些延迟。关于这一延迟,文档没有具体说明。您知道主机上的代码和容器内的代码之间的同步有多快吗?

代码语言:javascript
复制
volumes:
  - ./php_code:/var/www:cached
EN

回答 1

Stack Overflow用户

发布于 2017-12-02 22:19:53

  1. 使用NFS (不适用于高塞拉利昂- https://github.com/adlogix/docker-machine-nfs/issues/79)

DOCKER_MACHINE_NAME nfs ${DOCKER_MACHINE_NAME} --挂载-opts=“noacl,异步,nolock,vers=3,udp,noatime,actimeo=1”

  1. 将您的缓存保存在容器中--例如在/tmp/app_cache/*中--或者在内存/dev/shm/app_cache/*中(不重命名)

将缓存保存在AppKernel.php中的容器更改中(对于Symfony 4.0 Kernel.php)

代码语言:javascript
复制
...    
public function getCacheDir()
{
    if ($this->environment === 'env') {
        // Store in RAM.
        // return '/dev/shm/symfony_docker_test/cache/'.$this->environment;

        // Store in docker container (not docker-machine unless docker-compose volume is mounted).
        return '/tmp/symfony_cache/cache/' . $this->environment;
    }

    return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}
...

:cached解的结果

代码语言:javascript
复制
Time taken for tests:   20.396 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      82700 bytes
HTML transferred:       31900 bytes
Requests per second:    4.90 [#/sec] (mean)
Time per request:       203.963 [ms] (mean)
Time per request:       203.963 [ms] (mean, across all concurrent requests)
Transfer rate:          3.96 [Kbytes/sec] received

没有 :cached的解决方案的结果

代码语言:javascript
复制
Time taken for tests:   18.911 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      82700 bytes
HTML transferred:       31900 bytes
Requests per second:    5.29 [#/sec] (mean)
Time per request:       189.111 [ms] (mean)
Time per request:       189.111 [ms] (mean, across all concurrent requests)
Transfer rate:          4.27 [Kbytes/sec] received
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47613108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档