Rails资产在MacOX Docker上非常缓慢

4

我注意到我的Rails应用程序中资产请求非常缓慢。当卷在docker镜像内时,获取资产文件大约需要20毫秒。但是,当我启动容器并挂载文件时,获取它们需要大约400毫秒!

Docker文件系统很慢,但无论哪种情况下Rails应用程序的启动时间几乎相同,因此这不一定是原因。你有什么想法可能是原因呢?


是的,这是一个已知问题。请参见 https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076、https://medium.freecodecamp.org/speed-up-file-access-in-docker-for-mac-fbeee65d0ee7m 和 http://espeo.eu/blog/docker-for-mac-performance-tweaks/。 - Tarun Lalwani
这些文件都在容器里面吗? - Tarun Lalwani
不,它们全部都在挂载的卷中。 - Sławosz
好的,经过一段时间的思考,我发现我读取的大多数文件都在图像内部... - Sławosz
好的,很酷,这正是我所想的,但当你说反过来时,我不确定可能出了什么问题。 - Tarun Lalwani
显示剩余2条评论
1个回答

0

我曾经遇到过同样的问题,很难在Mac上开发使用Docker化的Rails应用程序,因为速度非常慢。

这是一个已知的问题,Docker在Mac和Windows上非常慢,特别是由于挂载卷。

首先,我们采取了一些预防措施:

  1. 确保您没有挂载大文件或文件夹。例如,我的日志目录大小为10GB!您可以安装ncdu以查找大文件/文件夹,请参考此链接:https://maketips.net/tip/461/docker-build-is-slow-or-docker-compose-build-is-slow
  2. 检查是否存在此网络已知问题:https://github.com/docker/compose/issues/3419#issuecomment-221793401

无论如何,以上预防措施并没有帮助太多。

最大的改进是添加了docker-sync gem! 看看这个:http://docker-sync.io/

基本上,使用这个gem,您正在使用一种不同的方法来同步您的机器和应用程序容器之间的文件夹。这非常有效,现在一切都非常快,几乎类似于Linux性能!


这很可能与docker-sync无关!他显然是在说加载需要很长时间。之前使用了docker-sync来将更新的文件同步到挂载点。Docker-for-mac解决了这个问题,使docker-sync变得多余。 - bastianwegge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接