我最近遇到了一个问题,在启动工作程序之前,matlabpool('open', 'local', 8)命令挂起大约27分钟。在延迟期间,Windows任务管理器显示单个MATLAB.exe进程消耗的CPU数为零,内存使用率或PF增量没有变化,并且使用的物理RAM少于25%。

我已经尝试在打开命令之前输入distcomp.feature( 'LocalUseMpiexec', false)matlabpool close force local,但是仍然有问题。直到最近,打开命令仅需要一两分钟即可完成。我没有进行任何配置更改,但是在IT部门托管的环境中工作,因此无法确定可能对OS / AV / etc进行了哪些维护更新。

谁能确定为什么会发生这种挂断?

我正在将Matlab版本8.1.0.604(R2013a)与Java 1.6.0_25-b0一起使用。我还使用Java 1.6.0_17-b04看到了该问题。运行Windows 7 Enterprise Version 6.1.7601 Service Pack 1 Build7601。PC具有双Intel Xeon CPU(12核)和24 GB RAM。

我单步使用调试器,并确定在CJSSupport.m文件的507行到达cjsPrepareForSubmission之前没有延迟。如果在那一点上我执行了“介入”操作,那么除了“执行指针”从绿色箭头变为白色箭头之外,显示没有任何变化。第二个“步骤”将显示JobInitData.m文件,其中包含class def (Hidden, Sealed) JobInitData,该文件从 View 中隐藏了实际的实现。

在没有任何延迟的情况下,将“Step In”再执行7次即可将变量plainTextForBatchJobplainTextForInteractiveJob添加到工作空间。在第8个“进入”状态下,matlab主窗口中指示的状态变为忙碌并保持25分钟以上。在状态最终更改为在调试器中停止之后,您可以单击继续,工作程序立即启动,并且该过程完成,而没有其他延迟。

从公开 call 到隐藏问题区域的 call 树:

matlabpool(‘open’, ‘local’, 8)
Matlabpool.m   139: matlabpoolOut = MatlabpoolHelper.doMatlabpool(parsedArgs,parsedArgs.ActionArgs.Scheduler);
MatlabPoolHelper.m  137:  MatlabpoolHelper.doOpen(sched, parsedArgs.ActionArgs);
MatlabPoolHelper.m  363: client.start('matlabpool', parsedOpenArgs.NumLabs, sched, 'nogui', parsedOpenArgs.FileDependencies);
InteractiveClient.m 279:  submit(obj.ParallelJob);
Job.m 302: job.submitOneJob();
CJSCommunicatingJob.m 82: job.Parent.hSubmitCommunicatingJob( job, job.Support, job.SupportID );
hSubmitCommunicatingJob.m  27: jobSupport.prepareJobForSubmission( job, jobSupportID );
CJSSupport.m 507 : cjsPrepareForSubmission( job, obj, jobSId );
JobInitData.m 8:  (HIDDEN)

最佳答案

问题是由于过时的环境变量LM_LICENSE_FILE指向不再在网络上的PC。

使用过程监控器;我们已经在MATLAB中确定了问题。我们能够看到MATLAB在26分钟的时间内尝试连接到端口1717上的ip地址。该ip地址最终成为了另一产品的许可证服务器的旧位置,该位置是通过LM_LICENSE_FILE设置的。删除LM_LICENSE_FILE环境变量后,问题就停止了(我们的MATLAB通过另一种方法获得许可;许可目录中的许可文件)。

显然,MATLAB会尝试首先使用LM_LICENSE_FILE中的任何服务器,如果无法访问该服务器,则超时时间会非常长-〜26分钟。超时后,它将搜索定位许可证定义的其他方法,然后成功。

可以通过设置环境变量“LM_LICENSE_FILE=171​​7@137.400.200.1”来重现该问题。所选的ip地址是任意的,但不应将其连接到PC。

关于matlab - 在开始工作之前,matlabpool(open…)会挂25分钟以上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21785628/

10-11 22:59
查看更多