Integrità del pool di applicazioni
ImportantImportante
Questa funzionalità di IIS 6.0 è disponibile solo in modalità di isolamento del processo di lavoro.

Nella modalità di isolamento processo di lavoro, i pool di applicazioni possono essere configurati in modo da monitorare l'integrità dei propri processi di lavoro e dell'intero pool. Il monitoraggio dell'integrità di un processo di lavoro comprende anche il rilevamento di un processo di lavoro non in grado di soddisfare richieste e l'applicazione delle relative contromisure. Se, ad esempio, un processo di lavoro non risponde a una richiesta di ping da parte del servizio Pubblicazione sul Web (servizio WWW), probabilmente non dispone di thread disponibili per elaborare le richieste in ingresso. In questo caso, il servizio WWW può terminare il processo di lavoro oppure rilasciarlo e mantenerlo in esecuzione, avviando un nuovo processo di lavoro sostitutivo. L'amministratore può preconfigurare un'azione da intraprendere quando un processo di lavoro non integro viene rilasciato, ad esempio può collegare tale processo a un debugger.

Oltre a monitorare l'integrità dei processi di lavoro, il servizio WWW può inoltre rilevare problemi in corso relativi all'intero pool di applicazioni. Ad esempio, se i processi di lavoro vengono terminati in modo anomalo ad intervalli di pochi secondi, il servizio WWW determina che il processo di lavoro non è integro e lo arresta, evitando il coinvolgimento di applicazioni di altri pool.

Le seguenti condizioni provocano l'avvio o l'arresto di un pool di applicazioni:

  • L'avvio della protezione rapida da errori provoca l'arresto di un pool di applicazioni
  • Il raggiungimento del tempo limite di un oggetto processo provoca l'arresto di un pool di applicazioni e il successivo avvio allo scadere dell'intervallo di tempo
  • Un errore di configurazione causato dal tentativo di utilizzare un'identità inesistente provoca l'arresto di un pool di applicazioni
  • Un amministratore di Windows effettua una richiesta di arresto o di avvio per un pool di applicazioni.

Monitoraggio dell'integrità del pool di applicazioni

L'esecuzione del ping per un processo di lavoro consente al servizio WWW di rilevare che un processo di lavoro non riesce a soddisfare le richieste e dunque che il processo non è integro. Il ping è lo scambio di un messaggio tra il servizio WWW e il processo di lavoro. Se l'esito del ping è positivo, il servizio WWW considera integro il pool di applicazioni. Se l'esito del ping è negativo, ovvero se non viene ricevuta alcuna risposta dal processo di lavoro, il servizio WWW deduce che si è verificato un problema in tale processo. In caso di problemi, il servizio WWW termina il processo di lavoro o lo rilascia e avvia un nuovo processo di lavoro all'arrivo di nuove richieste. Se il processo di lavoro viene rilasciato ma mantenuto in esecuzione, il servizio WWW effettuerà l'azione configurata dall'amministratore.

L'impostazione della funzionalità di ping del servizio WWW e la frequenza del ping sono controllate dalle proprietà della metabase seguenti: PingingEnabled Metabase Property e PingInterval Metabase Property.

La non integrità delle estensioni ISAPI può essere rilevata automaticamente

Un'applicazione di estensione ISAPI può essere sviluppata in modo da segnalare a IIS a livello di programmazione la necessità di essere riciclata. Questa operazione può essere eseguita tramite la nuova funzione di supporto server HSE_REQ_REPORT_UNHEALTHY. Vedere ServerSupportFunction nel sito Web MSDN Online.

Per utilizzare questa funzione in modo efficiente, è necessario che nel server IIS che esegue l'applicazione sia abilitata l'esecuzione di ping per i processi di lavoro (vedere l'argomento relativo alla Configuring Worker Process Pinging), poiché è durante l'operazione di ping che il servizio WWW rileva che l'ISAPI non è integra ed è necessario riciclare il processo di lavoro. Per determinare il proprio stato di non integrità, l'ISAPI richiede un meccanismo interno, ad esempio il monitoraggio dello stato del proprio pool di thread interni. Questo tipo di programmazione arresta il processo di lavoro nel quale viene eseguita l'estensione ISAPI. Pertanto, tutte le applicazioni eseguite in tale processo di lavoro verranno riavviate.

L'estensione ISAPI di ASP utilizza tale funzionalità durante il monitoraggio dello stato del proprio pool di thread interni. Se troppi thread entrano in uno stato di blocco, verrà segnalato un riciclo.

Limitazioni relative al rilevamento dell'integrità

Il rilevamento dell'integrità non può essere utilizzato per individuare errori delle applicazioni che non comportano l'arresto anomalo del processo di lavoro o il blocco dei thread disponibili all'interno di quest'ultimo. Ad esempio, un'applicazione che restituisce codici di risposta non validi, come gli errori HTTP 500, ma che comunque funziona correttamente, risponderà a un ping dal servizio WWW, a meno che non si tratti di un'estensione ISAPI personalizzata che implementa codice specifico per indicare lo stato di non integrità.

Abilitazione dell'azione di debug

Quando viene individuato un processo di lavoro non integro, anziché terminarlo è possibile richiedere al servizio WWW di mantenerlo in esecuzione allo scopo di eseguirne il debug, avviando contemporaneamente un nuovo processo di lavoro per soddisfare le richieste. Quando si abilita il debug in un pool di applicazioni, viene segnalato al servizio WWW di non terminare il processo di lavoro, ma di sospenderne le operazioni per il pool di applicazioni e mantenerlo in esecuzione.

Oltre all'esecuzione di un processo di lavoro non integro in stato di rilascio, è possibile configurare l'avvio da parte del servizio WWW di un'applicazione eseguibile o di uno script, ad esempio di un'applicazione che invii messaggi di posta elettronica agli amministratori per notificare la possibilità di utilizzare la funzionalità di debug per tale errore. L'id di processo del processo considerato non integro è il primo argomento inviato all'applicazione eseguibile o allo script.

noteNota
Un processo di lavoro rilasciato e mantenuto in esecuzione dal servizio WWW può comunque arrestarsi. Se il processo di lavoro riacquista l'integrità, rileverà la mancanza di relazioni con il servizio WWW e quindi si arresterà autonomamente. Sarà pertanto possibile trovare una voce di registro attestante che il processo di lavoro è stato rilasciato, ma non sarà rilevabile alcun processo in esecuzione.

Quando è abilitata l'opzione di rilascio dei processi di lavoro non integri, si riscontreranno processi di lavoro bloccati, in quanto IIS non li rimuove dalla memoria. Se gli amministratori non gestiscono in modo adeguato i processi di lavoro mantenuti in esecuzione a scopo di debug, potrebbe essere rilevato un numero elevato di processi di lavoro non integri in esecuzione nel computer. Inoltre, questi processi di lavoro possono utilizzare risorse necessarie ad altri processi. Potrebbe essere necessario terminarli rapidamente per liberare tali risorse.

Protezione rapida da errori

La protezione rapida da errori arresta i pool di applicazioni quando viene rilevato un numero eccessivo di processi di lavoro non integri assegnati a tale pool in un periodo di tempo specificato.

Quando un pool di applicazioni viene arrestato, HTTP.sys restituisce un messaggio di errore di mancato funzionamento (503: Servizio non disponibile) oppure la connessione viene reimpostata in base alla configurazione della proprietà LoadBalancerCapabilities del pool di applicazioni. Inoltre, quando un pool di applicazioni viene arrestato automaticamente, è possibile configurare un'azione (ad esempio un'operazione di debug) per notificare l'arresto del pool di applicazioni all'amministratore.

noteNota
Se in un singolo computer sono presenti più applicazioni, è necessario configurare attentamente il bilanciamento del carico o l'hardware in modo che venga reindirizzato solo il traffico destinato a un pool di applicazioni non integro. Non reindirizzare le richieste destinate a pool di applicazioni integri in quanto questi possono riceverle ed elaborarle.

La protezione rapida da errori riduce l'overhead di elaborazione per applicazioni problematiche in quanto le richieste non vengono elaborate in modalità utente. In questo modo, altri pool di applicazioni non possono essere danneggiati dal pool non integro.

È possibile impostare la protezione rapida da errori in due modi:

  1. Configurare IIS in modo da impostare l'applicazione in stato di protezione rapida in base al numero di processi di lavoro non integri rilevati in un periodo di tempo determinato, misurato in minuti
  2. Impostare un'applicazione in stato di protezione rapida manualmente.

Condizioni per il monitoraggio dell'integrità del pool di applicazioni

Il monitoraggio dell'integrità di un pool di applicazioni e l'applicazione di contromisure richiedono almeno i seguenti passaggi:

  1. Consentire il rilevamento di applicazioni non integre da parte del servizio WWW tramite l'abilitazione dell'esecuzione del ping per i processi di lavoro. Vedere l'argomento relativo alla Configuring Worker Process Pinging.
  2. Configurare la protezione rapida da errori per consentire di disabilitare pool di applicazioni quando i processi di lavoro assegnati a tali pool si arrestano in modo anomalo per un determinato numero di volte in un periodo specificato. Vedere Configurazione della protezione rapida da errori in IIS 6.0.

Informazioni correlate

Tag :


Page view tracker