7.1.1. Hardware
Einige Regeln zur optimalen Ausnutzung der Hardware:

  • die Maschine darf niemals anfangen den Server aus dem Speicher auszulagern
  • es sollten möglichst ausreichend Server gestartet werden
  • es sollten immer genug parallel Server laufen

Mit den folgenden Randbedingungen kann die Performance des Server gesteuert werden:

  • Der Apache ist unter UNIX per default ein preforking-Server. Ein Hauptserver startet eine Anzahl an Kindern, die die Anfragen bearbeiten. Der Vater betreut nur die Kinder, startet bei Bedarf weitere oder beendet überzählige.
  • Es werden maximal 32 neuer Server je Sekunde gestartet (exponential! 1/s, 2/s, 4/s, 8/s, 16/s, 32/s). Daher sollten genug Server gestartet und bereitgehalten werden (MinSpareServers, MaxSpareServers, StartServers)
  • Ein Server benötigt 200 – 400 kB RAM. Wenn die Maschine anfängt zu swappen, muss die Anzahl der Clients begrenzt werden (MaxClients, Timeout)
  • Verschiedene Module können ein „memory-leak“  haben. Daher werden die einzelnen Prozesse nach einer maximalen Anzahl von Anfragen terminiert und neu gestartet (MaxRequestPerChild). Da nur begrenzt neue Prozesse gestartet werden, darf dieser Wert nicht zu klein sein. Für rein statische Seiten kann dieser Wert sehr hoch gesetzt werden.
  • Bei HTTP/1.1 besteht die Möglichkeit, dass ein Client mehr als eine Anfrage je Verbindung an den Server sendet (persistent connections). Durch das Warten des Servers auf weitere Anfragen werden Ressourcen blockiert. Daher kann hier eine Optimierung notwendig werden (KeepAlive, MaxKeepAliveRequests, KeepAliveTimeout)
  • Das Statusmodul  erfordert teilweise mehrere Systemaufrufe zur Zeitmessung. Daher sollte auf jeden Fall der erweiterte Status (ExtendedStatus) vermieden werden, wenn es auf Performance ankommt.
  • Virtuelle Server, die von einem Server bedient werden, kosten Performance, da der Server ständig prüfen muss, für welchen Server eine Anfrage  vorliegt. Hochleistungsserver sollten sich daher auf einen Server beschränken.