症状
运行 Microsoft 最前沿威胁管理网关 (TMG) 2010年的服务器可能会停止接受新的连接上的特定 web 代理或 web 侦听器。可能会出现此问题后几个小时到几天的服务器正常运行时间。
原因
在 TMG 停止接受新的连接,web 侦听器上时,将发生此问题。这很快就填满缓冲区队列的辅助功能的驱动程序 (AFD) 套接字。缓冲区队列已满之后,服务器将启动重置新传入的连接。如果这种情况下使用网络监视器来监视服务器,您可能会注意到 SYN,每次新的连接尝试的 ACK/RST 模式。
解决方案
要解决此问题,请安装最前沿威胁管理网关 (TMG) 2010 Service pack 2 的累积 5 。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。
详细信息
安装累积 5 之后,必须启用时间空闲出接受呼叫的功能。若要执行此操作,请执行以下步骤:
-
将以下脚本复制到记事本中,然后再将该文件另存为 SetAcceptIdleTimeout.vbs:
'Define the constants needed.Const strVpsGUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"
Const strVpsPropertyName = "AcceptIdleTimeout"
Const Error_FileNotFound = &H80070002
Set objArgs = wscript.Arguments
if objArgs.Count > 0 then
uAcceptIdleTimeout = objArgs(0)
end if
if objArgs.Count <> 1 then
wscript.echo "Usage: SetAcceptIdleTimeout.vbs <timeout>"
wscript.echo
wscript.echo "Set async accept timeout to <timeout> value (in sec)"
wscript.echo "To disable async accept timeout set it to 0"
wscript.Quit 2
end if
set objArray = CreateObject("FPC.Root").GetContainingArray()
Set objVPSet = OpenVPSet(objArray, strVpsGUID)
objVPSet.Value(strVpsPropertyName) = uAcceptIdleTimeout
objArray.Save()
objArray.RestartServices(1)
function OpenVPSet(objParent, strVpsGUID)
Set objVPSets = objParent.VendorParametersSets
On Error Resume Next
Set OpenVPSet = objVPSets.Item(strVpsGUID)
' Save the Err properties in case it needs to be re-raised
errNumber = Err.Number
errSource = Err.Source
errDescription = Err.Description
errHelpFile = Err.HelpFile
errHelpContext = Err.HelpContext
On Error GoTo 0
if errNumber = Error_FileNotFound Then
Set OpenVPSet = objVPSets.Add(strVpsGUID)
Elseif errNumber < 0 Then
' An error other than "file not found" occurred -- re-raise the error,
' this time not under "On Error Resume Next"
Err.Raise errNumber, errSource, errDescription, errHelpFile, errHelpContext
End If
end function
-
一个 TMG 服务器上运行该脚本。例如将超时时间设置为 5 分钟,从管理的命令提示符下运行以下命令︰
cscript.exe SetAcceptIdleTimeout.vbs 300
-
若要使此更改生效,请重新启动防火墙服务在所有阵列成员上。
若要撤消此更改,请运行下面的命令以将闲置超时时间设置为 0:
cscript.exe SetAcceptIdleTimeout.vbs 0
参考资料
了解 Microsoft 用于描述软件更新的术语。