Symptômes
Un serveur qui exécute Microsoft Forefront Threat Management Gateway (TMG) 2010 peut cesser d’accepter de nouvelles connexions sur un proxy web spécifique ou d’un port d’écoute web. Ce problème peut se produire après plusieurs heures à plusieurs jours de temps de fonctionnement du serveur.
Cause
Ce problème se produit lorsque TMG cesse d’accepter de nouvelles connexions sur le port d’écoute web. Cela remplit plus rapidement la file d’attente de la file d’attente du socket de pilote de fonction connexe. Une fois que la file d’attente de la file d’attente est pleine, le serveur démarre réinitialiser les nouvelles connexions entrantes. Si vous surveillez le serveur à l’aide du Moniteur réseau dans ce cas, vous pouvez remarquer un SYN, modèle d’accusé de réception/RST pour chaque nouvelle tentative de connexion.
Résolution
Pour résoudre ce problème, installez le correctif cumulatif 5 pour Forefront Threat Management Gateway (TMG) 2010 Service Pack 2.
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».
Plus d'informations
Après avoir installé le correctif cumulatif 5, vous devez activer la fonctionnalité à l’heure d’expiration inactive accepter les appels. Pour ce faire, procédez comme suit :
-
Copiez le script suivant dans le bloc-notes, puis enregistrez le fichier sous 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
-
Exécutez le script sur l’un des serveurs de TMG. Par exemple définir le délai d’expiration de 5 minutes, exécutez la procédure suivante à partir d’une invite de commande d’administration :
cscript.exe SetAcceptIdleTimeout.vbs 300
-
Pour effectuer cette modification soit prise en compte, redémarrez le service de pare-feu sur tous les membres du groupe.
Pour annuler cette modification, exécutez la commande suivante pour définir le délai d’inactivité sur 0 :
cscript.exe SetAcceptIdleTimeout.vbs 0
Références
Obtenir des informations sur la terminologie que Microsoft utilise pour décrire les mises à jour logicielles.