如何减少Docker WSL 2中的Java编译时间?
我使用Windows,所以Docker有WSL2。 在我的项目中,我使用docker compose命令编译Java代码。 编译时间超过15分钟。Tomcat启动的情况也一样。 我试图在如何减少Docker WSL 2中的Java编译时间?,java,docker,compilation,windows-subsystem-for-linux,wsl-2,Java,Docker,Compilation,Windows Subsystem For Linux,Wsl 2,我使用Windows,所以Docker有WSL2。 在我的项目中,我使用docker compose命令编译Java代码。 编译时间超过15分钟。Tomcat启动的情况也一样。 我试图在.wslconfig(6GB)中为WSL分配更多内存。 这对我不起作用 如何减少编译时间?在WSL2中处理大量文件时(Java项目经常这样做),性能的极端下降通常是由于文件位于Windows NTFS文件系统中(例如,在C:\下)。WSL2用于访问NTFS的9P协议驱动程序比本机性能慢得多。有关我的系统的比较,请
.wslconfig
(6GB)中为WSL分配更多内存。
这对我不起作用
如何减少编译时间?在WSL2中处理大量文件时(Java项目经常这样做),性能的极端下降通常是由于文件位于Windows NTFS文件系统中(例如,在
C:\
下)。WSL2用于访问NTFS的9P协议驱动程序比本机性能慢得多。有关我的系统的比较,请参见此答案的结尾
您的Java项目是否在NTFS文件系统上?或者它是否位于WSL2实例中的虚拟ext4
文件系统中?如果答案是NTFS,请考虑下列解决方案:
- 将项目移动到WSL2实例中。请注意,将项目从其现有位置符号化到
文件系统将不起作用ext4
- 通常我会说“考虑WSL1”,但这意味着你会失去Docker。但是您可以在WSL中创建一个具有所需编译工具的发行版。(我没有这样做),您甚至可以
docker导出容器,然后
wsl——将它导入到一个新实例中。
命令允许您设置wsl--import
--version 1
- 最后,我不确定这一点,但您可以尝试没有WSL2后端的Docker Desktop。在这种情况下,使用Hyper-V支持的Docker可能会更快
ext4
与9P NTFS
的比较:
~/temp$ time git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git
Cloning into 'WSL2-Linux-Kernel'...
...
real 0m40.968s
user 0m8.711s
sys 0m3.795s
/mnt/c$ time git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git
Cloning into 'WSL2-Linux-Kernel'...
...
real 8m33.582s
user 0m19.286s
sys 0m42.802s
是的,我尝试了3d选项(打开Hyper-V。它在性能上对我很好,但我还有其他问题…)