我使用查找和foreach活动的组合来循环访问数据引入查询集并执行它们(其背后的原因是单独的广泛主题:))。由于数据源已连接到专用网络,因此我预配了一个专用 VM 来运行自承载运行时。在大多数情况下,一切运行顺利,我可以看到工作进程吞噬了 CPU 和高整体 CPU 利用率(这很好)。
但是:有时,当大多数工作完成,并且只有 2-3 个活动排队时,我可以看到运行时不执行任何处理,CPU 使用率下降到零,事件日志中没有出现新条目。一段时间后(大约 10 分钟),我得到了 30002(下面提供了示例),运行时愉快地完成了工作。
示例事件消息:
任务ID: ***-fcab-429a-bb45-*** 任务 ID: ***-d820-414e-ad8c-*** 队列 ID: ***-4f44-4c39-a1c1-*** 日志 ID:拉下新任务
问题:此类 Azure 数据工厂自承载集成运行时行为的根本原因可能是什么?这可以微调吗?
<小时 />更新1
在应用程序日志中发现了错误,在集成运行时日志中发现了警告。
应用程序日志包含 3 组错误(请参阅下面的事件 [1] 到 [5]),这些错误发生在 ~2 分钟的时间间隔内,不久之后 8 个事件(正好是我的工作进程数)被记录到集成运行时日志(请参阅 [6]),紧接着出现"Windows 错误报告"事件。然后我们面临"冻结"。
所以 - 看起来像一个错误:(
"应用程序">日志:
[1]
Application: diawp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.NullReferenceException
at Microsoft.DataTransfer.TransferTask.CopyTaskBase.UpdateJobProgress(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()
[2]
Faulting application name: diawp.exe, version: 3.5.6639.1, time stamp: 0x5aa8cf5f
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000
Exception code: 0xc0000005
Fault offset: 0x00007ff914402c65
Faulting process id: 0x1bc4
Faulting application start time: 0x01d3d287ef6e34fa
Faulting application path: C:Program FilesMicrosoft Integration Runtime3.0Shareddiawp.exe
Faulting module path: unknown
Report Id: 1fe7de4d-5481-478d-b9e7-d542c24ab18a
Faulting package full name:
Faulting package-relative application ID:
[3]:无法打开服务器服务性能对象。"数据"部分的前四个字节 (DWORD) 包含状态代码。
[4]:DLL "C:\Windows\system32\wbem\wmiaprpl.dll" 中服务 "WmiApRpl" 的开放过程失败。此服务的性能数据将不可用。
"集成运行时">日志:
[6]
'Type=System.InvalidOperationException,Message=Instance 'diawp#10' does not exist in the specified Category.,Source=System,StackTrace= at System.Diagnostics.CounterDefinitionSample.GetInstanceValue(String instanceName)
at System.Diagnostics.PerformanceCounter.NextSample()
at System.Diagnostics.PerformanceCounter.NextValue()
at Microsoft.DataTransfer.TransferTask.FormatedPerfCounter.TryGet(Single& value),'
Job ID: 7b629411-c6cd-42d0-9939-e830e58db015
Log ID: Warning
它看起来像是由工人崩溃引起的。您能否从以下位置检查事件日志: Windows 日志 => 应用程序?类别中有任何错误吗?
据我所知,您没有很多选项来调整集成运行时。我敢打赌您的专用网络存在连接问题。每当运行管道时,请在 VM 上打开一个 cmd,然后使用 -t 对数据库电脑执行 ping 操作。如果进程挂起,请查看 ping 之间的响应时间。
示例 ping:
ping 192.168.1.1 -t
希望这有帮助!
> 30002 表示 IntegrationRuntime 分配了新任务并开始执行。 如果 10 分钟的"重试间隔"可以不断重现,那么 30002 可以进一步指示 IntegrationRuntime 在分配的先前失败任务中丢失了跟踪,并且必须重试。
您可以在事件日志中搜索特定的 JobId,以验证是否在 10 分钟前显示,以及任何相关的异常。
顺便说一句,正常快乐路径中的轮询间隔以秒为单位。