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