我正在构建系统上运行go test ./...
,它占用了大量内存,有时在我们的其中一个系统上占用高达4Gb的内存。有没有一种方法可以使go test
减少资源消耗?
编辑:要提供更多上下文,我们在Docker映像中运行测试。我们有30个目录,并且为每个目录创建一个docker镜像并在其中运行测试。我们运行make -j4 test_each_all_directories
。我们的机器有15Gb的ram,每个目录占用<2Gb(除了一个占用4Gb的目录)。
我当时正在寻找一种“强制”测试的方法,以使用最大3Gb的内存,或者对发生问题的原因进行更多的解释(事情没有加在一起,RAM的15Gb远远超过4 + 2 + 2 +最多2个)
您的测试可能需要更长的时间才能运行,但是您是否尝试过依次运行测试?从go help build
-p n
the number of programs, such as build commands or
test binaries, that can be run in parallel.
The default is the number of CPUs available.
默认情况下,Go将尽可能并行运行多个测试程序包。要确保依次运行跨越多个软件包的测试,请使用-p 1
运行测试命令。您的测试命令将变为:
go test ./... -p 1