Query di ottimizzazione di Apache


1

Sto cercando di ottimizzare i parametri in apache per un sito Web ad alto traffico. Le mie specifiche sono

Ram : 12 GB RAM
CPU : 16 core

Parametri attuali

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MinSpareServers 5
MaxSpareServers 10
ServerLimit 2500
MaxClients 2500
MaxRequestsPerChild 10000
KeepAlive Off
KeepAliveTimeout 5
MaxKeepAliveRequests 100

Quali sono i valori consigliati per questi parametri in base alle specifiche del mio server?


Perché hai impostazioni duplicate lì dentro?
Jonas Schäfer,

Risposte:


1

In questo sito è disponibile un ottimo tutorial su come "calcolare" le impostazioni. (Tutorial anche di seguito nel caso in cui il sito non sia in linea)

Prima di personalizzare le direttive devi capire come funzionano le direttive. Lasciami spiegare in un inglese semplice. Il server avvierà 2 processi figlio determinati dalla direttiva StartServers. Ogni processo avvierà 20 thread, che è determinato dalla direttiva ThreadsPerChild, quindi questo significa che 2 processi possono servire solo 40 connessioni / client simultanei (ovvero 20 × 2 = 40). Cosa succede se arrivano più richieste.

Ora, se arrivano più utenti simultanei, inizierà un altro processo figlio, che può servire altri 20 utenti. Ma quanti processi figlio possono essere avviati è controllato dal parametro ServerLimit, questo significa che nella configurazione sopra, posso avere 10 processi figlio in totale, con ogni processo figlio in grado di gestire 20 thread, nella gestione totale 10 × 20 = 200 utenti simultanei .

Ma c'è un problema, il numero definito in MaxClients è 100 qui, ciò significa che dopo 5 processi figlio, non verrà avviato alcun processo aggiuntivo poiché abbiamo definito un limite massimo di MaxClients. Ciò significa anche che se imposto MaxClients su 500, dopo 10 processi figlio e 200 connessioni, non verrà avviato alcun processo aggiuntivo e non possiamo servire più di 200 client simultanei anche se abbiamo aumentato il parametro MaxClient. In questo caso, dobbiamo anche aumentare ServerLimit a 500/20 ovvero MaxClients / ThreadsPerChild = 25

Bene, ora conosci le direttive e come funzionano, il problema è come calcolare le direttive. Passiamo al calcolo dei valori della direttiva.

Puoi usare questo script di shell per determinare una quantità media di memoria consumata da un processo Apache. Inoltre, mostrerà la quantità totale di memoria consumata da tutti i processi Apache. Basta decomprimere ed eseguire con il comando sh. Risultati accurati verranno visualizzati quando il server è sotto carico pesante.

L'output

Utilizzo memoria Apache (MB): 57.586 Dimensione media processo (MB): 10.2

Apache Memory Usage (MB): 57.586
Average Proccess Size (MB): 10.2   

se in media, supponiamo che un processo Apache consumi 50 MB di RAM e che il server abbia RAM sia 2048 MB e che si desideri lasciare 512 MB per il resto dei processi, quindi:

MaxClients = (2048MB – 512MB)/10MB = 153.6 ~ 153
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.