2

我使用查找和 foreach 活动的组合来遍历数据摄取查询集并执行它们(其背后的原因是一个单独的广泛主题:))。由于数据源连接到专用网络,因此我提供了一个专用 VM 来运行自托管运行时。在大多数情况下,一切都运行顺利,我可以看到工作进程占用 CPU 和较高的整体 CPU 利用率(这很好)。

但是:有时,当大部分工作完成时,只有 2-3 个活动在排队,我可以看到运行时没有处理并且 CPU 使用率下降到零,事件日志中没有新条目出现。一段时间后(大约 10 分钟)我得到了 30002(下面提供了示例)并且运行时愉快地完成了工作。

示例事件消息:

作业 ID:***-fcab-429a-bb45-***
任务 ID:***-d820-414e-ad8c-***
队列 ID:***-4f44-4c39-a1c1-***
日志 ID:PulledOffNewTask

问题:这种 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 Files\Microsoft Integration Runtime\3.0\Shared\diawp.exe
Faulting module path: unknown
Report Id: 1fe7de4d-5481-478d-b9e7-d542c24ab18a
Faulting package full name: 
Faulting package-relative application ID: 

[3]:无法打开Server服务性能对象。数据部分的前四个字节 (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
4

3 回答 3

1

它看起来像是由工人崩溃引起的。您能否从以下位置检查事件日志:Windows 日志 => 应用程序?分类有错误吗?

于 2018-04-13T09:04:10.743 回答
0

据我所知,您没有很多选项来调整集成运行时。我敢打赌,您的专用网络存在连接问题。每当您运行管道时,请在 vm 上打开一个 cmd 并使用 -t ping 数据库 pc。如果进程挂起,请查看 ping 之间的响应时间。

示例 ping:

ping 192.168.1.1 -t

希望这有帮助!

于 2018-04-12T19:56:18.463 回答
0

30002 表示 IntegrationRuntime 分配了新任务并开始执行。如果 10 分钟的“重试间隔”可以不断重现,那么 30002 可能进一步表明 IntegrationRuntime 丢失了之前分配给它的失败任务的轨迹,不得不重试。

您可以在事件日志中搜索特定的 JobId,以验证是否在 10 分钟前显示以及任何相关异常。

顺便说一句,正常快乐路径中的轮询间隔以秒为单位。

于 2018-04-13T09:20:15.723 回答