gpt4 book ai didi

php - Docker-缓存的已装载卷同步延迟

转载 作者:行者123 更新时间:2023-12-02 19:34:19 25 4
gpt4 key购买 nike

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

原来,问题是由基于osxfs的挂载卷引起的,osxfs是一种共享文件系统解决方案,仅适用于Mac的Docker。

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

引入已装入卷的缓存模式后,性能已大大提高。但是,它允许在主机上的更新出现在容器中之前有一些延迟。该文档不是专门针对此延迟的。您知道主机上和容器内的代码之间的同步速度有多快吗?

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

最佳答案

  • 使用 NFS (不适用于High Sierra-more details here)

  • docker-machine-nfs ${DOCKER_MACHINE_NAME} --mount-opts="noacl,async,nolock,vers=3,udp,noatime,actimeo=1"


  • PHP缓存保留在容器中-例如在/tmp/app_cache/*中-或者在内存/dev/shm/app_cache/*中(不推荐)

  • 要在容器中保留缓存,请在 AppKernel.php中更改(对于Symfony 4.0 Kernel.php)
    ...    
    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
    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
    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

    关于php - Docker-缓存的已装载卷同步延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613108/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com