Apache-Einstellungen bei Debian 9

ereuter

Member
Hallo,

ich musste bei meinem alten Server die sehr konservativen apache-Einstellungen für
ServerLimit, MaxClients etc. erhöhen, weil ansonsten der Server bei zu großem Andrang keine Verbindungen mehr angenommen hat. Nach einem Serverumzug mit Debain 9 auf dem Server wollte ich diese Einstellungen wieder anpassen.

Aber jetzt gibt es diese Einträge in der /etc/apache2/apache2.conf gar nicht mehr. Muss ich diese Einträge neu anlegen, oder sind sie jetzt standardmäßig besser konfiguriert?
 

Till

Administrator
Such doch mal nach den einstellungen mit grep -r in /etc/apache2/
Wenn Du sie nicht dort findest, dann wirst Du sie anlegen müssen. Ob sich die Default geändert haben kann ich nicht sagen.
 

ereuter

Member
Sorry - ich wusste nicht, dass das relevant ist, aber er gibt prefork aus, wenn ich apachectl -V eingebe. Komplette Ausgabe:

Server version: Apache/2.4.25 (Debian)
Server built: 2017-07-18T18:37:33
Server's Module Magic Number: 20120211:68
Server loaded: APR 1.5.2, APR-UTIL 1.5.4
Compiled using: APR 1.5.2, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
 

HSorgYves

Member
ServerLimit wird benötigt um MaxRequestWorkers zu erhöhen; MaxClients gab es vor 2.3.13, heisst jetzt MaxRequestWorkers und hat als Standard 256.
 

ereuter

Member
Vielen Dank, damit hast du mir sehr geholfen. Scheinbar war der Wert sogar noch niedriger, nämlich 150.

Falls jemand hier mitliest, und ein ähnliches Problem hat - die Einstellung MaxRequestWorkers findet man in den Dateien:

mods-available/mpm_worker.conf: MaxRequestWorkers 150
mods-available/mpm_event.conf: MaxRequestWorkers 150
mods-available/mpm_prefork.conf: MaxRequestWorkers 150
mods-enabled/mpm_prefork.conf: MaxRequestWorkers 150

Ich habe es jetzt nur in mods-enabled/mpm_prefork.conf ausgebessert:

<IfModule mpm_prefork_module>
StartServers 25
MinSpareServers 25
MaxSpareServers 100
MaxRequestWorkers 1000
ServerLimit 1100
MaxConnectionsPerChild 0
</IfModule>

Für einen Server, der viele Hosts hat, ist MaxRequestWorkers wohl zu hoch im Vergleich zu ServerLimit, aber da ich nur eine richtige Seite und noch eine kleine Nebenseite habe, habe ich die MaxRequestWorkers relativ hoch gesetzt. Das ServerLimit steht standardmäßig gar nicht drinnen. Wenn man das jedoch nicht erhöht (Standard war bei mir wohl 256) hilft natürlich auch das Erhöhen von MaxRequestWorkers nur bedingt.
 

HSorgYves

Member
Warum setzt Du ServerLimit höher als MaxRequestWorkers, das macht meines Wissens bei prefork keinen Sinn?
MaxConnectionsPerChild 0 ist der Standardwert. Ich frage mich nur was Du da für eine Seite laufen hast, dass Du solche Einstellungen brauchst...
 

ereuter

Member
ServerLimit gilt für alle Webs. MaxRequestWorkers für eine Domain - zumindestens war das beim Vorgänger MaxClients so. Wenn da MaxClients 150 War und gleichzeitig 200 Verbindungen einer Domain offen sind, funktioniert die zweite Domain trotzdem noch tadellos, wenn das ServerLimit höher ist.

Bei der gehosteten Seite war die Standardeinstellung zu Stoßzeiten zu niedrig. Und dann kommt man nicht drauf, warum auf einmal die Seite dann manchmal ewig braucht, und manchmal normal schnell geht, obwohl sich sie Auslastung wenn man zB. mit top nachschaut praktisch nicht ändert und alle anderen Dienste tadellos laufen, bis einem auffällt, dass ps -C apache2 | wc -l immer die gleiche Zahl ausgibt und bei etwas über 150 stehen bleibt.
Und nachdem ich dann die Einstellungen ServerLimit und MaxClients geändert habe, ist dann die Geschwindigkeit auch in Stoßzeiten schnell geblieben.

Die 1000 habe ich eher genommen, weil das der Server ohne jegliche Probleme bewältigen sollte. Die SpareServer werde ich aber wohl noch etwas runterschrauben, weil es bei mir eher so ist, dass zwischen den Stroßzeiten eher wenig los ist und da nicht unnötig viele Leerinstanzen laufen müssen.
 

HSorgYves

Member
Danke für die Infos. Für mich gelten ServerLimit und MaxRequestWorkers für den Server (Context: server config) und das war auch schon bei MaxClients so.
 

Werbung

Top