linux cifs windows 慢,windows上使用dockerIO特别慢有没有更优的解决方案?
復(fù)制一個(gè)大佬的回答
Docker for Windows是在Hyper-V虛擬機(jī)上跑Linux,文件掛載是通過(guò)SMB協(xié)議從Windows掛載到Linux,文件讀寫(xiě)都經(jīng)過(guò)網(wǎng)絡(luò),遇到Laravel這種每次啟動(dòng)就要加載幾百個(gè)文件的框架,文件性能問(wèn)題就尤其明顯。
最好的驗(yàn)證方法就是進(jìn)到容器里,strace一下php-fpm進(jìn)程,看下系統(tǒng)調(diào)用的耗時(shí),你就會(huì)發(fā)現(xiàn)大部分時(shí)間都是在stat或read,所以解決的思路就是減少網(wǎng)絡(luò)文件系統(tǒng)的讀寫(xiě)。
方案0: 開(kāi)opcache,減少read調(diào)用
方案1:不使用SMB協(xié)議掛載文件,通過(guò)union、rsync之類的工具同步文件修改。
方案2: 用WSL2
方案3:修改cifs內(nèi)核模塊,單獨(dú)加大vendor目錄的緩存時(shí)間,因?yàn)関endor目錄下的文件很少變更,加大文件信息的緩存時(shí)間可以減少大量網(wǎng)絡(luò)調(diào)用。加上方案0,響應(yīng)時(shí)間從1秒減少到0.1秒。(現(xiàn)在我就在用這個(gè)方案,自己在Hyper-V跑Arch Linux + 修改過(guò)的cifs模塊化 + docker)
Github有相關(guān)的討論:Shared Volumes Slow ,基本都是方案0-2。
總結(jié)
以上是生活随笔為你收集整理的linux cifs windows 慢,windows上使用dockerIO特别慢有没有更优的解决方案?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 010 使用list和tuple
- 下一篇: linux中文本查找命令,Linux常用