windows上使用dockerIO特别慢有没有更优的解决方案?

发布于 2022-09-11 19:36:53 字数 277 浏览 14 评论 0

问题

部门目前使用docker来部署开发环境[lnmp],由于有一些旧的项目,会引入大量的库文件,因此在windows上经常一个接口请求需要十几秒,而在原生的linux机器上同样的环境几乎不需要1秒就可以响应.
后来查阅资料发现是因为IO的问题,读取文件速度太慢导致...黑人问号...
目前的一个临时解决方案是把项目代码放到虚拟机中,然后由samba把项目挂载到windows,但是这样有个问题就是在虚拟盘上使用svn特别慢

想问一下大佬们有没有其他更优的解决方案,不要太复杂搞什么文件同步

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梨涡 2022-09-18 19:36:54

复制一个大佬的回答

Docker for Windows是在Hyper-V虚拟机上跑Linux,文件挂载是通过SMB协议从Windows挂载到Linux,文件读写都经过网络,遇到Laravel这种每次启动就要加载几百个文件的框架,文件性能问题就尤其明显。

最好的验证方法就是进到容器里,strace一下php-fpm进程,看下系统调用的耗时,你就会发现大部分时间都是在stat或read,所以解决的思路就是减少网络文件系统的读写。

方案0: 开opcache,减少read调用

方案1:不使用SMB协议挂载文件,通过union、rsync之类的工具同步文件修改。

方案2: 用WSL2

方案3:修改cifs内核模块,单独加大vendor目录的缓存时间,因为vendor目录下的文件很少变更,加大文件信息的缓存时间可以减少大量网络调用。加上方案0,响应时间从1秒减少到0.1秒。(现在我就在用这个方案,自己在Hyper-V跑Arch Linux + 修改过的cifs模块化 + docker)

Github有相关的讨论:Shared Volumes Slow ,基本都是方案0-2。

人间☆小暴躁 2022-09-18 19:36:54

楼主啊!!都2019/10/10号了,您解决了吗???

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文