Sintomi
Un server che esegue Microsoft Forefront Threat Management Gateway (TMG) 2010 smetta di accettare nuove connessioni su un proxy web specifico o un listener web. Questo problema può verificarsi dopo alcune ore a diversi giorni di tempo di attività server.
Causa
Questo problema si verifica quando TMG non accetta nuove connessioni per il listener web. Questo riempie non appena la coda di backlog per il socket (AFD) driver di funzioni ausiliario. Dopo la coda di backlog è piena, il server viene avviato per reimpostare le nuove connessioni in ingresso. Se è possibile monitorare il server utilizzando Network Monitor in questo caso, è possibile notare un SYN, modello di ACK/RST per ogni nuovo tentativo di connessione.
Risoluzione
Per risolvere questo problema, installare cumulativo 5 per Forefront Threat Management Gateway (TMG) 2010 Service Pack 2.
Stato
Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".
Ulteriori informazioni
Dopo aver installato cumulativo 5, è necessario attivare la funzionalità di time out di inattività di accettare chiamate. A tale scopo, attenersi alla seguente procedura:
-
Copiare lo script seguente nel blocco note e quindi salvare il file come 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
-
Eseguire lo script su uno dei server TMG. Ad esempio per impostare il periodo di timeout su 5 minuti, eseguire da un prompt dei comandi amministrativo:
cscript.exe SetAcceptIdleTimeout.vbs 300
-
Per apportare questa modifica abbia effetto, riavviare il servizio firewall su tutti i membri di matrice.
Per annullare questa modifica, eseguire il comando seguente per impostare il timeout di inattività 0:
cscript.exe SetAcceptIdleTimeout.vbs 0
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.