Server 服务:IRP 堆栈大小

Microsoft.Windows.FileServices.Service.SMB.6.3.StackSizeConfig (UnitMonitor)

此对象可监视 IRP 堆栈大小,并在堆栈太小时生成警报。

Knowledge Base article:

摘要

此对象可监视 IRP 堆栈大小,并在堆栈太小时生成警报。

此监视器将检查 IRPStackSize 参数值是否足够大,以使服务器可以访问本地设备。IRPStackSize 参数指定服务为 I/O 请求数据包 (IRP) 建立的堆栈位置数量。

原因

如果 IRPStackSize 参数值太小,导致 Server 服务无法在某些物理驱动器上正常管理共享目录,此监视器可能会进入“严重”运行状况状态。

如果运行状况状态未知,则说明对此对象的监视尚未开始。

解决方案

若要执行此过程,您必须是本地计算机上管理员组的成员,或者已被委派了适当的权限。

更新默认的 IRP 堆栈大小

要在受影响的服务器上解决此问题,请按以下步骤尝试更新默认的 IRP 堆栈大小:

1. 依次单击“开始”和“运行”, 键入 regedit,然后单击“确定”。

2. 找到并单击选择以下注册表子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

3. 如果 IRPStackSize 参数存在,转到步骤 4。如果该参数不存在,请执行以下操作:

● 在“编辑”菜单上,指向“新建”,然后单击 DWORD

● 键入 IRPStackSize,然后按 ENTER。

4. 右键单击 IRPStackSize,然后单击“修改”。

5. 在“基数”下方,选择“十进制”。在“数值数据”框中,键入所需的值(在 25 和 50 之间),然后单击“确定”。

6. 在提升的命令提示符处,键入 net stop server,然后按 ENTER。如果系统提示您确认操作,键入 y

7. 键入 net start server,然后按 ENTER。

注意 您可能必须重新启动随 Server 服务一起停止的其他依赖服务。

验证

要确认 Server 服务是否正在运行,请在 Operations Console 中使用以下过程:

单击“查询服务器服务状态”任务。

解决此问题后,在 Operations Console 中将监视重置为正常状态。

其他

服务器事件 2011 (http://go.microsoft.com/fwlink/?LinkId=183116)

Element properties:

TargetMicrosoft.Windows.FileServices.Service.SMB.6.3
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.RepeatedEventLogTimer2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Server 服务:默认的 IRP 堆栈大小太小
服务器的默认配置参数“irpstacksize”太小,导致服务器无法使用本地设备。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.FileServices.Service.SMB.6.3.StackSizeConfig" Accessibility="Public" Enabled="true" Target="Microsoft.Windows.FileServices.Service.SMB.6.3" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.RepeatedEventLogTimer2StateMonitorType" ConfirmDelivery="true">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.FileServices.Service.SMB.6.3.StackSizeConfig.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="RepeatedEventRaised" MonitorTypeStateID="RepeatedEventRaised" HealthState="Error"/>
<OperationalState ID="TimerEventRaised" MonitorTypeStateID="TimerEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<RepeatedComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</RepeatedComputerName>
<RepeatedLogName>System</RepeatedLogName>
<RepeatedExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">2011</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">srv</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</RepeatedExpression>
<Consolidator>
<ConsolidationProperties/>
<TimeControl>
<WithinTimeSchedule>
<Interval>60</Interval>
</WithinTimeSchedule>
</TimeControl>
<CountingCondition>
<Count>2</Count>
<CountMode>OnNewItemTestOutputRestart_OnTimerSlideByOne</CountMode>
</CountingCondition>
</Consolidator>
<TimerWaitInSeconds>180</TimerWaitInSeconds>
</Configuration>
</UnitMonitor>