Apache è stato sviluppato dando priorità alla stabilità, integrità e espandibilità del servizio mentre meno attenzione è stata data alla performance brutale, pur essendo stati fatti notevoli sforzi al riguardo, in particolare con la versione 2.0.
Per questo motivo, in performance test di laboratorio, Apache non risulta sempre la soluzione più veloce, anche se spesso, in condizioni e con necessità reali, le sue feature risultano di fatto più efficaci.
Esistono comunque diversi modi per migliorare le performance di Apache, fondamentalmente riguardano la configurazione e la quantità di features che si intendono utilizzare.
Restando inteso che il tuning del proprio sistema va fatta sulla base delle specifiche esigenze, per cui non è semplice dare indicazioni assolute, valide in ogni contesto, è possibile fornire dati utili su come configurare il proprio server per migliorarne le prestazioni, sia in termini di velocità che in termini di occupazione delle risorse del sistema e scalabilità.
In generale:
- Un Apache compilato staticamente, senza il supporto di moduli dinamici, risulta generalmente più efficiente. Gli stessi moduli da caricare dinamicamente (o da compilare staticamente) possono essere limitati e selezionati nel numero, a seconda delle direttive effettivamente utilizzate in modo da ridurre l'impronta in memoria del binario in esecuzione.
Uno strumento comodo per capire cosa effettivamente serve è server-info che indica quali direttive sono usate nel proprio file di configurazione e da quali moduli sono fornite.
- httpd.conf presenta una serie di direttive che riguardano esplicitamente le performance del sistema. Il loro tuning permette di adeguare meglio il proprio Web Server a situazioni di traffico diverse. Nel BOX dedicato si possono leggere i dettagli.
- Altre direttive influiscono in vario modo sulle performance, in particolare esistono direttive, presenti nel file di configurazione di default, che possono essere rimosse senza problemi perchè riguardano funzionalità che non vengono sfruttate sul proprio sistema.
- A livello di risorse hardware è la RAM quella che di fatto, come spesso accade, influisce maggiormente sulle performance. Su un server web performante non si dovrebbe mai utilizzare il file di SWAP, per cui ci si deve attrezzare per aumentare la memoria fisica.
- Nella maggior parte dei casi reali il vero collo di bottiglia di un sito web è la generazione dei contenuti dinamici. Spesso quindi il fine tuning di Apache ha un impatto trascurabile rispetto all'architettura generale del sito, agli Application Server e l'accesso al database di backend. In questi casi va spostata la propria attenzione sull'ottimizzazione del codice e delle query, l'indicizzazione delle tabelle del DB, la staticizzazione di parte dei contenuti dinamici.
Suggerimenti e informazioni per migliorare le performance di Apache.