Sintomas
Um servidor que esteja executando o Microsoft Forefront ameaça Management Gateway (TMG) 2010 pode parar de aceitar novas conexões em um proxy da web específico ou um ouvinte da web. Esse problema pode ocorrer depois de várias horas para vários dias de tempo de atividade do servidor.
Causa
Esse problema ocorre quando a TMG para de aceitar novas conexões no ouvinte da web. Isso preenche logo fila de registro posterior para o soquete de função auxiliar (AFD) do driver. Depois que a fila de registro posterior estiver cheia, o servidor começará a redefinir novas conexões de entrada. Se você monitorar o servidor usando o Monitor de rede nessa situação, você poderá notar um SYN, padrão de ACK/RST para cada nova tentativa de conexão.
Resolução
Para resolver esse problema, instale o pacote cumulativo de atualizações 5 para o Forefront ameaça Management Gateway (TMG) 2010 Service Pack 2.
Status
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".
Mais informações
Depois de instalar o pacote cumulativo de atualizações 5, você deve habilitar a funcionalidade de tempo limite ocioso aceitar chamadas. Para fazer isso, execute as seguintes etapas:
-
Copie o seguinte script no bloco de notas e salve o arquivo como 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
-
Execute o script em um dos servidores da TMG. Por exemplo, para definir o período de tempo limite para 5 minutos, execute o seguinte em um prompt de comando administrativo:
cscript.exe SetAcceptIdleTimeout.vbs 300
-
Para que essa alteração tenha efeito, reinicie o serviço de firewall em todos os membros da matriz.
Para desfazer esta alteração, execute o seguinte comando para definir o tempo limite ocioso para 0:
cscript.exe SetAcceptIdleTimeout.vbs 0
Referências
Saiba mais sobre a terminologia usada pela Microsoft para descrever as atualizações de software.