我们正在亚马逊服务器(Windows Server 2012 R2)上运行自动化Jenkins构建,以获得一些Visual Studio解决方案。其中较大的项目使用/MP
配置,使用多处理器编译,尝试最小化构建时间。
我们也会使用msbuild
标记运行/m
。
问题是几分钟后我们得到:
TRACKER:错误TRK0002:执行命令失败:"" C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin \ CL.exe" @C:\用户\管理员\应用程序数据\本地\ TEMP \ tmpd19a7e5e426f4ec7baa597ed75516fd4.rsp&#34 ;.没有足够的配额可用于处理此命令。
仅在运行Jenkins代理时才会出现此问题。使用Visual Studio IDE一切都很好。从命令提示符运行MSBuild时,一切都很好。
知道为什么会这样,我们可以解决它吗?
运行
WMIC CPU Get DeviceID,NumberOfCores,NumberOfLogicalProcessors
got
DeviceID NumberOfCores NumberOfLogicalProcessors
CPU0 2 4
也许VS2015没有正确检测到有效处理器的数量并且跨越了同时产生太多进程的某些进程边界?
非常感谢任何帮助。
答案 0 :(得分:1)
问题是在WinRM中定义了配额,如下所示:https://msdn.microsoft.com/en-us/library/ee309367(v=vs.85).aspx 我们将MaxProcessesPerShell的值更改为高于默认值25并且瞧。
答案 1 :(得分:0)
从technet轻松回答"创建更多虚拟内存"实际上可能值得一试。
Jenkins,当它启动MSBuild时似乎使用Runtime.exec()
(如果您正在查看他们的代码,请结帐Launcher.java
。)
这通常会创建一个新进程,至少在开始时,它与启动进程具有相同的内存占用。所以有一段时间你可能会为构建过程运行两倍的内存。因此,在启动时可以使用更多虚拟内存可能足以让新进程运行足够长的时间以使启动过程完成并释放。
这是Technet的咳嗽错误消息的有用说明:https://technet.microsoft.com/en-us/library/cc958981.aspx