我使用lookup和foreach活动的组合来遍历数据提取查询集并执行它们(背后的原因是一个单独的广泛主题:))。当数据源连接到专用网络时,我已经配置了专用VM来运行自托管运行时。在大多数情况下,一切运行顺利,我可以看到工作进程占用CPU和高CPU总体利用率(这是好的)。
但是:有时,当大多数工作完成后,只有2-3个活动排成一行,我可以看到运行时没有处理,CPU使用率降到零,没有新的条目显示在事件日志中。经过一段时间(大约10分钟)后,我得到了30002(下面提供了示例),运行时很乐意完成工作。
示例事件消息:
Job ID: ***-fcab-429a-bb45-*** Task ID: ***-d820-414e-ad8c-*** Queue ID: ***-4f44-4c39-a1c1-*** Log ID: PulledOffNewTask
问题:这种Azure数据工厂自托管集成运行时行为的根本原因是什么?这可以微调吗?
应用程序日志中发现了错误,并且在集成运行时日志中发现了警告。
应用程序日志包含3组错误(参见下面的事件[1]至[5]),这些错误发生在约2分钟的时间间隔内,此后不久,8个事件(确切地说是我的工作进程的数量)被记录到整合运行时日志(参见[6]),紧接着#34; 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]:无法打开服务器服务性能对象。数据部分的前四个字节(DWORD)包含状态代码。
[4]:服务公开程序" WmiApRpl"在DLL" C:\ Windows \ system32 \ wbem \ wmiaprpl.dll"失败。此服务的性能数据将不可用。
" Integration Runtime" 日志:
[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
答案 0 :(得分:1)
看起来像工人崩溃造成的。你可以检查一下事件日志:Windows Log =>应用?类别中的任何错误?
答案 1 :(得分:0)
据我所知,您没有很多选项来调整Integration Runtime。我的赌注是您的专用网络连接问题。无论何时运行管道,在vm处打开cmd并使用-t ping数据库pc。如果进程挂起,请查看ping之间的响应时间。
示例ping:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadeScrollbars="false"
android:scrollbarFadeDuration="0"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="52dp"/>
</android.support.v4.widget.NestedScrollView>
希望这有帮助!
答案 2 :(得分:0)
30002表示IntegrationRuntime已分配新任务并开始执行。 如果10分钟&#34;重试间隔&#34;可以不断地再现,然后30002可以进一步指示IntegrationRuntime在之前分配的失败任务上丢失了轨道并且必须重试。
您可以在事件日志中搜索特定的JobId,以验证是否在10分钟前出现以及与之相关的任何例外。
顺便说一句,正常快乐路径中的轮询间隔是以秒为单位。