Ottimizzazione delle prestazioni Documentazione IBM HTTP Server
Utenti UNIX

Analisi del modello processi di Apache V2.0 in IBM HTTP Server

Quando viene avviato il processo parent di Apache, viene eseguito il fork su un certo numero di processi child. Ciascuno di questi processi child crea un certo numero di thread responsabile dell'accettazione delle connessioni in entrata sui socket sorvegliati. Quando il sistema riceve una connessione, attiva uno dei thread per gestire la connessione. Ciascun thread di Apache può gestire una connessione.
Ad esempio Apache ha bisogno di 1000 thread per gestire 1000 client connessi contemporaneamente o connessioni.

Controllo del numero di thread di IBM HTTP Server

È possibile utilizzare diverse direttive di configurazione per controllare il numero di thread di IBM HTTP Server o il numero di client supportati contemporaneamente. Di seguito vengono riportate le direttive più importanti.

  • StartServers
    Specifica il numero iniziale dei processi child da iniziare quando viene avviato il server. Apache aumenta automaticamente il numero di processi child con l'aumentare del carico del server. Il numero massimo di processi child è definito dall'impostazione MaxClients diviso per l'impostazione di ThreadsPerChild.
  • MaxClients
    Specifica il numero massimo di processi Apache che possono essere eseguiti contemporaneamente. Limitando tale numero, si evita il rischio di esaurire le risorse hardware disponibili. Alcune installazioni richiedono di utilizzare la direttiva ServerLimit per consentire un valore elevato per MaxClients.
  • ThreadsPerChild
    Specifica il numero di thread che verrà creato in ciascun processo child. Alcune installazioni richiedono di utilizzare la direttiva ThreadLimit per consentire un valore elevato per ThreadsPerChild.

Disponibilità dei processi IBM HTTP Server nella gestione delle richieste con la funzione KeepAlive

HTTP V1.1 dispone di una funzione conosciuta come Connection KeepAlive. In una connessione non KeepAlive il browser avvia una connessione TCP ed invia una singola richiesta al server. Il server risponde e la connessione viene stabilita. Ogni richiesta comprende l'attivazione e la disattivazione di una connessione TCP. La funzione KeepAlive conserva le connessioni per una serie di richieste, controllate dalle direttive di configurazione. Questo controllo riduce il carico di rete relativo all'avvio e alla disattivazione di connessioni TCP. Il server presuppone che per una connessione KeepAlive il browser invierà un'altra richiesta. Il server tenta di leggere dalla rete la richiesta successiva. Se questa non è disponibile, il processo viene bloccato in fase di lettura, in attesa della richiesta successiva.

Considerare uno scenario tipico in cui un utente accede a un sito Web che può scaricare ed eseguire il rendering di una pagina di informazioni sul browser. Questi si attarda durante la lettura della pagina, L'utente non richiede attivamente altre pagine, ma il server viene bloccato in fase di lettura della rete in attesa della richiesta successiva. Questo processo bloccato non è disponibile per gestire le richieste di altri client. L'utente può seguire un collegamento dal sito Web, allontanarsi dalla postazione e non inviare un'altra richiesta. È possibile configurare IBM HTTP Server in modo che rimanga in attesa per un intervallo di tempo specifico per la successiva richiesta utilizzando:

  • KeepAliveTimeout
    Il valore predefinito è di 15 secondi. Questa impostazione indica che il server interrompe l'attesa della richiesta successiva, chiude la connessione con il client inattivo e rende il processo disponibile per la gestione di altre richieste.

Alcuni siti caricati lentamente disabilitano completamente la funzione KeepAlive.

Definire le necessità del proprio sito ed impostare in modo appropriato KeepAliveTimeout. Concedere al browser abbastanza tempo per richiedere tutti gli elementi della pagina sulla connessione KeepAlive, ma non attendere troppo a lungo per avviare la richiesta della pagina successiva. Alcuni raccomandano di impostare KeepAliveTimeout su 5 secondi come buon compromesso tra il bilanciare i processi disponibili e il minimizzare I/O di rete.

Impostazione delle date di scadenza su contenuto statico

È possibile ridurre le richieste di connessione al proprio sito impostando le date di scadenza di documenti con mod_expires. Se il browser ha memorizzato una visita precedente, questa azione può evitare un'altra richiesta di connessione al proprio sito.

 
Informazioni correlate

     (Torna all'inizio)