Funzionalità del servizio di attivazione dei processi di Windows (WAS)
di Thomas Deml
Il servizio di attivazione dei processi Windows (WAS) di IIS 7 è il componente chiave che fornisce funzionalità di configurazione e modello di processo per applicazioni Web e servizi Web. L'attività principale WAS consiste nel gestire i pool di applicazioni. I pool di applicazioni sono contenitori di configurazione che rappresentano l'ambiente di hosting per i gruppi di URL.
Quando un client HTTP richiede un URL HTTP.SYS esegue il mapping della richiesta a una coda di richieste del pool di applicazioni. Un processo di lavoro per la coda di richieste del pool di applicazioni viene generato da WAS e il processo di lavoro esegue il codice necessario per inviare una risposta. Una delle attività principali di WAS consiste nel gestire i processi di lavoro generati, ad esempio WAS monitora l'integrità, li ricicla, se necessario e garantisce che nessuno di essi consuma più risorse di quanto specificato nella configurazione di AppPool corrispondente. WAS è anche l'arbitro e l'agente di raccolta per i dati di runtime e di stato, ad esempio i contatori delle prestazioni, lo stato del sito e del pool di applicazioni.
Diagramma dell'architettura
Funzionalità del modello di elaborazione
Il supporto di 10000 o più siti Web da ospitare nello stesso computer fisico è un requisito fondamentale per gli ambienti di hosting di massa odierni. Il codice in esecuzione su questi siti Web in genere non è testato correttamente, se non è affatto corretto. Per supportare questi requisiti WAS, è necessario fornire un potente modello di processo e una gestione efficiente delle risorse.
Gestione efficiente delle risorse
Attivazione su richiesta
Le risorse come RAM e CPU sono scarse in scenari multi-tenant. WAS avvierà un processo di lavoro IIS una sola volta che arrivano richieste per un determinato sito Web o applicazione Web.
Timeout di inattività
Poiché le risorse sono in genere scarse was possono arrestare le applicazioni Web in base a un timeout di inattività configurabile.
Monitoraggio dell'integrità
Per garantire che l'integrità was monitori i processi di lavoro generati. I messaggi di integrità vengono inviati periodicamente a ogni processo di lavoro in esecuzione. Se il processo di lavoro non risponde in un intervallo di tempo configurabile, il processo di lavoro verrà riciclato o terminato. In questo modo i deadlock non rilevati nei processi di lavoro vengono corretti automaticamente riavviando il processo di lavoro.
Limite di avvio
Parte della funzionalità protezione Rapid-Fail è il limite di avvio. Se un processo di lavoro non restituisce WAS entro il limite di avvio configurabile, verrà eliminato e il contatore Rapid-Fail-Protection viene incrementato. I pool di applicazioni vengono arrestati, ovvero il riavvio del processo di lavoro non verrà più provato, se il contatore Rapid-Fail-Protection raggiunge un limite configurabile entro un limite di tempo configurabile. Ciò impedisce scenari in cui i processi di lavoro si bloccano o si arrestano in modo anomalo durante l'avvio.
Limite di arresto
Un processo di lavoro deve anche arrestarsi in un limite configurabile. Se l'arresto non si verifica in questo momento, il processo di lavoro viene ucciso da WAS. Ciò impedisce l'uso eccessivo delle risorse a causa di processi in sospeso nella fase di arresto. Le impostazioni di arresto aggiuntive consentono l'avvio di un eseguibile ,ad esempio un debugger, quando l'arresto non viene completato entro il tempo assegnato.
Affinità CPU
Le impostazioni di configurazione consentono a WAS di avviare processi di lavoro affini con una o più CPU. Ciò impedisce ai tenant di interferire tra loro se condividono lo stesso computer fisico.
Profilo utente
WAS può avviare processi di lavoro con o senza caricare il profilo utente.
Sicurezza
Identità del pool di applicazione
I processi di lavoro IIS possono essere eseguiti come account personalizzato, account predefinito (LocalService, LocalSystem, NetworkService) o identità del pool di applicazioni (impostazione predefinita). È consigliabile usare l'identità del pool di applicazioni perché non richiede la gestione delle password e le identità del pool di applicazioni rispettano già il principio dei privilegi minimi. Anche gli account predefiniti non richiedono la gestione delle password. Se viene usata un'identità utente personalizzata, la password viene crittografata automaticamente. Le impostazioni di configurazione possono essere replicate in più computer condividendo le chiavi di crittografia di configurazione tra i computer.
Funzionalità degli oggetti job
Gli oggetti processo consentono agli amministratori di limitare i processi di lavoro a un determinato limite di CPU. Se questo limite di CPU viene superato, viene eseguita un'azione configurabile. Gli oggetti processo assicurano inoltre che i processi generati dal processo di lavoro vengano terminati.
Isolamento e sicurezza della configurazione
Prima che WAS avvii un pool di applicazioni e il relativo processo di lavoro generi un file di configurazione univoco per questo pool di applicazioni. I pool di applicazioni hanno anche impostazioni di configurazione per eseguire pool di applicazioni con identità univoche. È tuttavia possibile ottenere l'isolamento anche se viene usata la stessa identità. WAS crea un SID (Security Identifier) univoco per ogni pool di applicazioni. Il file di configurazione del pool di applicazioni viene quindi protetto con questo SID univoco. Ciò garantisce che i file di configurazione del pool di applicazioni possano essere letti solo dagli amministratori e dal pool di applicazioni stesso. Anche le autorizzazioni per i file possono essere configurate usando questo SID univoco.
Diagnostica e monitoraggio
Registrazione degli eventi
Gli eventi relativi alla configurazione, al riciclo, all'avvio o all'arresto dei processi di lavoro non validi vengono segnalati al registro eventi di sistema.
Attualmente in esecuzione delle richieste
WAS espone un'interfaccia di controllo dello stato e di runtime che consente a script e strumenti di eseguire query per le richieste attualmente in esecuzione di un processo di lavoro specifico. Ciò è utile per trovare le richieste che si bloccano o le richieste che richiedono molto tempo per il completamento.
Contatori delle prestazioni
Tutti i contatori delle prestazioni iis vengono imbuti tramite WAS. WAS raccoglie questi contatori delle prestazioni perché i contatori IIS sono basati sul sito e le applicazioni Web possono risiedere in pool di applicazioni diversi.
Riciclo
Il riciclo consente l'aggiornamento dei processi di lavoro senza perdere una singola richiesta a causa del tempo di inattività. Questa operazione viene eseguita tramite una funzionalità denominata "riciclo sovrapposto".
Riciclo sovrapposto
WAS esegue questa operazione generando un nuovo processo di lavoro parallelo a quello precedente che gestisce ancora le richieste. Quando il nuovo processo di lavoro viene avviato, avvia la raccolta delle richieste dalla coda delle richieste mentre il processo di lavoro precedente viene richiesto da WAS di interrompere la raccolta delle richieste. Al termine del processo di lavoro precedente, tutte le richieste in esecuzione vengono arrestate. Questa funzionalità è denominata "riciclo sovrapposto". Garantisce che nessuna richiesta venga persa durante un riciclo.
Configurazione riciclo
I parametri di riciclo sono configurabili nel sistema di configurazione IIS.
Riciclo pianificato
I clienti potrebbero voler riciclare le applicazioni in base a una pianificazione regolare. Il riciclo delle impostazioni di configurazione può essere pianificato periodicamente, ad esempio ogni 4 ore, ogni giorno alle 13 e così via.
Riciclo basato sul consumo di memoria
Le applicazioni potrebbero perdere memoria nel tempo. WAS può monitorare il consumo di memoria di ogni processo di lavoro per garantire che nessun processo di lavoro usi più del limite preconfigurato. Il raggiungimento di una soglia di memoria virtuale o privata configurata attiverà il riciclo di un processo di lavoro.
Riciclo in base al numero di richieste
Il riciclo può essere configurato anche in base al numero di richieste gestite da un determinato processo di lavoro.
Riciclo personalizzato
Il codice personalizzato può personalizzare le statistiche di integrità e attivare un riciclo tramite una chiamata API al runtime WAS e all'API di stato.
Processo orfano
Alcuni errori si verificano solo in un ambiente di produzione. L'eliminazione dei processi di lavoro garantisce tempi di attività, ma la risoluzione di questi errori diventa difficile, ad esempio se il processo di lavoro non riuscito deve essere sottoposto a debug. La funzionalità di orfanizzazione del processo in WAS consente di riciclare i processi di lavoro senza uccidere il processo di lavoro non riuscito. A questo momento un debugger può essere collegato. Le impostazioni di orfano processo aggiuntivo consentono l'esecuzione di un processo (ad esempio, un debugger) se si verifica l'orfano.
Gestione dello stato del pool di applicazioni
I pool di applicazioni possono essere arrestati, riciclati o avviati tramite API disponibili pubblicamente, ad esempio se un'applicazione deve essere eseguita offline o se il riciclo deve essere eseguito in base ai parametri diversi da quello che è configurabile nel file applicationhost.config.
Funzionalità aggiuntive DI WAS
funzionalità Load-Balancer
HTTP.SYS ancora in ascolto nella rete e restituirà un messaggio di errore HTTP 500 se le richieste non vengono rilevate da un pool di applicazioni. Si tratta di un problema perché per un servizio di bilanciamento del carico di livello 5 (TCP/IP) un errore HTTP 500 è simile a una connessione TCP/IP valida. Un'impostazione di configurazione WAS può abilitare HTTP.SYS per rifiutare le connessioni anziché inviare risposte HTTP.
È possibile configurare WAS per avviare i processi di lavoro con le impostazioni seguenti:
Supporto WoW64
WAS può avviare processi di lavoro a 32 bit o a 64 bit.
Preload di .NET Framework
È possibile configurare WAS per eseguire il preload di una determinata versione di .NET Framework. In questo modo è possibile semplificare la risoluzione dei problemi relativi ai conflitti di versione.
Giardini Web
Un Web Garden è il termine per un pool di applicazioni che viene eseguito con più processi di lavoro. Le richieste vengono distribuite tra queste istanze del processo di lavoro usando un meccanismo round robin.
Supporto per più protocolli WAS
WAS non ospita solo lo stack HTTP. Può anche ospitare altri protocolli tramite l'adapter listen e il framework del processo di lavoro. I servizi WCF sfruttano il supporto di WAS Multi-Protocol. I protocolli WCF sono disponibili con i propri listener, ad esempio la RETE. TCP, NET. MSMQ o NET. Listener PIPE. Questi listener si connettono a WAS usando le interfacce dell'adattatore listener WAS.
I protocolli dell'applicazione che sfruttano questa infrastruttura possono ospitare codice applicazione personalizzato nello stesso dominio applicazione .NET delle applicazioni di ASP.NET regolari. Possono anche sfruttare i servizi indipendenti dal protocollo forniti dall'ambiente di hosting ASP.NET, ad esempio compilazione su richiesta, supporto per la configurazione e così via.