Hi Leute,
ich befasse mich derzeit mit dem Aufmotzen des Apaches unter folgendem System:
Hetzner EQ4:
i7-950
8 GB Ram
Debian Squeeze 64 Bit
mit Plesk
Folgendes habe ich bereits gemacht:
Aufteilung an RAM:
MySQL: 2,5 GB
Apache: ca. 3,5 GB
Rest (Mail / System): 2 GB
Würdet ihr anders aufteilen?
MySQL läuft wirklich super. Geht rauf bis 2,5 GB (davon 1 GB Query Cache), wenn er das braucht (aktuell nur in den "ab" Benchmarks) - tuning primer bestätigt das. Der "Rest" ist auch scheinbar völlig ausreichend mit 2 GB. Nur Apache bereitet mir aktuell etwas Probleme.
Hier zunächst meine Settings (Prefork) vom Apache:
Für Apache rechne ich pro Prozess mit ca. 16 MB (Huschi rechnet in seinen Artikeln mit 12 MB, komme ich aber eher nicht dran). Demnach bei 3,5 GB für Apache 3500 / 16 = ca. 220 MaxClients.
Soweit sollte das ja korrekt sein.
Wenn ich nun mit diesen Settings einen Becnhmark wie diesen hier starte:
ab -n 1000 -c 100 http://www.example.org/
Läuft alles wunderbar, Auch ein zweites und drittes mal. Wenn ich jedoch danach einen Benchmark auf ein anderes Projekt auf dem Server starte:
ab -n 1000 -c 100 http://www.example2.org/
Schmiert die gesamte Kiste vollkommen ab mit einer Load gegen 140 wie in htop zu sehen. Erstaunlicherweise geht der RAM in diesen fällen NIE über 4000 - 4300 MB hinaus und er fängt an den Swap (mit 2 GB) vollzuknallen.
Dabei hätte ich doch noch fast 4 GB?!
Wenn ich das jetzt mal umrechne:
4300 MB (auf die er maximal geht) - 2500 MB (für MySQL die beim Becnhmark auch schön beansprucht werden) = 1800 MB für Apache und System.
Ziehen wir davon noch ca. 800-1000 MB für System / Mail / Spamd ... ab kommen wir auf ca. 1000 MB.
1000 MB / 16 MB (pro Apache Prozess) = 62 MaxClients
Stelle ich Apache auf 50 MaxClients funktioniert alles gut ohne vollständig abzuschmieren oder den Swap volllaufen zu lassen. Auch noch mit 80 MaxClients, wenn ich mich recht entsinne.
Aber warum?
Ist vielleicht ein RAM Riegel kaputt?
Wieso nutzt er den restlichen Speicher nicht?
Ich würde diesen gerne für Apache "reservieren".
Oder habe ich vielleicht einen ganz groben Denk-/Rechenfehler?
Zur Info: Die "swappiness" habe ich auf 15 heruntergesetzt.
"free" zeigt folgenden RAM (aktuell - Normalbetrieb - ohne Becnhmarks):
Ich freue mich auf euer Feedback!
Schon mal vielen Dank!
Grüße,
caom
PS: Warum liegen eigentlich alle PHP-FCGI Childs nur unter dem ersten Apache Child? Ist das normal? Sollte er hier nicht auch mal auf andere Apache Childs verteilen?
"ps fax" Ausgabe nach Benchmark
-- Update --
Gerade mal memtester laufen lassen.
Der kann wunderbar 8 GB RAM nutzen.
Kaputt wird er wohl also nicht sein.
ich befasse mich derzeit mit dem Aufmotzen des Apaches unter folgendem System:
Hetzner EQ4:
i7-950
8 GB Ram
Debian Squeeze 64 Bit
mit Plesk
Folgendes habe ich bereits gemacht:
Aufteilung an RAM:
MySQL: 2,5 GB
Apache: ca. 3,5 GB
Rest (Mail / System): 2 GB
Würdet ihr anders aufteilen?
MySQL läuft wirklich super. Geht rauf bis 2,5 GB (davon 1 GB Query Cache), wenn er das braucht (aktuell nur in den "ab" Benchmarks) - tuning primer bestätigt das. Der "Rest" ist auch scheinbar völlig ausreichend mit 2 GB. Nur Apache bereitet mir aktuell etwas Probleme.
Hier zunächst meine Settings (Prefork) vom Apache:
Code:
Timeout 5
KeepAlive On
MaxKeepAliveRequests 250
KeepAliveTimeout 2
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 15
ServerLimit 220
MaxClients 220
MaxRequestsPerChild 3000
</IfModule>
Für Apache rechne ich pro Prozess mit ca. 16 MB (Huschi rechnet in seinen Artikeln mit 12 MB, komme ich aber eher nicht dran). Demnach bei 3,5 GB für Apache 3500 / 16 = ca. 220 MaxClients.
Soweit sollte das ja korrekt sein.
Wenn ich nun mit diesen Settings einen Becnhmark wie diesen hier starte:
ab -n 1000 -c 100 http://www.example.org/
Läuft alles wunderbar, Auch ein zweites und drittes mal. Wenn ich jedoch danach einen Benchmark auf ein anderes Projekt auf dem Server starte:
ab -n 1000 -c 100 http://www.example2.org/
Schmiert die gesamte Kiste vollkommen ab mit einer Load gegen 140 wie in htop zu sehen. Erstaunlicherweise geht der RAM in diesen fällen NIE über 4000 - 4300 MB hinaus und er fängt an den Swap (mit 2 GB) vollzuknallen.
Dabei hätte ich doch noch fast 4 GB?!
Wenn ich das jetzt mal umrechne:
4300 MB (auf die er maximal geht) - 2500 MB (für MySQL die beim Becnhmark auch schön beansprucht werden) = 1800 MB für Apache und System.
Ziehen wir davon noch ca. 800-1000 MB für System / Mail / Spamd ... ab kommen wir auf ca. 1000 MB.
1000 MB / 16 MB (pro Apache Prozess) = 62 MaxClients
Stelle ich Apache auf 50 MaxClients funktioniert alles gut ohne vollständig abzuschmieren oder den Swap volllaufen zu lassen. Auch noch mit 80 MaxClients, wenn ich mich recht entsinne.
Aber warum?
Ist vielleicht ein RAM Riegel kaputt?
Wieso nutzt er den restlichen Speicher nicht?
Ich würde diesen gerne für Apache "reservieren".
Oder habe ich vielleicht einen ganz groben Denk-/Rechenfehler?
Zur Info: Die "swappiness" habe ich auf 15 heruntergesetzt.
"free" zeigt folgenden RAM (aktuell - Normalbetrieb - ohne Becnhmarks):
Code:
# free
total used free shared buffers cached
Mem: 8190820 3061592 5129228 0 20480 479404
-/+ buffers/cache: 2561708 5629112
Swap: 2102456 0 2102456
Ich freue mich auf euer Feedback!
Schon mal vielen Dank!
Grüße,
caom
PS: Warum liegen eigentlich alle PHP-FCGI Childs nur unter dem ersten Apache Child? Ist das normal? Sollte er hier nicht auch mal auf andere Apache Childs verteilen?
"ps fax" Ausgabe nach Benchmark
Code:
19517 ? Ss 0:00 /usr/sbin/apache2 -k start
19524 ? S 0:00 \_ /usr/sbin/apache2 -k start
19532 ? S 0:05 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19533 ? S 0:05 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19537 ? S 0:04 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19538 ? S 0:04 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19539 ? S 0:04 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19545 ? S 0:02 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19547 ? S 0:02 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19549 ? S 0:02 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19555 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19558 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19560 ? S 0:02 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19569 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19570 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19571 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19575 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19578 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19581 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19589 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19592 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19593 ? S 0:01 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19608 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19609 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19610 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19611 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19612 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19613 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19614 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19615 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19616 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19617 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19630 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19636 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19637 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19648 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19649 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19650 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19651 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19661 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19662 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19663 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19664 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19665 ? S 0:00 | \_ /usr/bin/php5-cgi -c /var/www/vhosts/example.org/etc/php.ini
19526 ? S 0:00 \_ /usr/sbin/apache2 -k start
19527 ? S 0:00 \_ /usr/sbin/apache2 -k start
19528 ? S 0:00 \_ /usr/sbin/apache2 -k start
19529 ? S 0:00 \_ /usr/sbin/apache2 -k start
19530 ? S 0:00 \_ /usr/sbin/apache2 -k start
19536 ? S 0:00 \_ /usr/sbin/apache2 -k start
19546 ? S 0:00 \_ /usr/sbin/apache2 -k start
19548 ? S 0:00 \_ /usr/sbin/apache2 -k start
19550 ? S 0:00 \_ /usr/sbin/apache2 -k start
19551 ? S 0:00 \_ /usr/sbin/apache2 -k start
19557 ? S 0:00 \_ /usr/sbin/apache2 -k start
19561 ? S 0:00 \_ /usr/sbin/apache2 -k start
19563 ? S 0:00 \_ /usr/sbin/apache2 -k start
19565 ? S 0:00 \_ /usr/sbin/apache2 -k start
19572 ? S 0:00 \_ /usr/sbin/apache2 -k start
19573 ? S 0:00 \_ /usr/sbin/apache2 -k start
19574 ? S 0:00 \_ /usr/sbin/apache2 -k start
19576 ? S 0:00 \_ /usr/sbin/apache2 -k start
19577 ? S 0:00 \_ /usr/sbin/apache2 -k start
19579 ? S 0:00 \_ /usr/sbin/apache2 -k start
19580 ? S 0:00 \_ /usr/sbin/apache2 -k start
19582 ? S 0:00 \_ /usr/sbin/apache2 -k start
19585 ? S 0:00 \_ /usr/sbin/apache2 -k start
19586 ? S 0:00 \_ /usr/sbin/apache2 -k start
19587 ? S 0:00 \_ /usr/sbin/apache2 -k start
19588 ? S 0:00 \_ /usr/sbin/apache2 -k start
19590 ? S 0:00 \_ /usr/sbin/apache2 -k start
19591 ? S 0:00 \_ /usr/sbin/apache2 -k start
19628 ? S 0:00 \_ /usr/sbin/apache2 -k start
19629 ? S 0:00 \_ /usr/sbin/apache2 -k start
19632 ? S 0:00 \_ /usr/sbin/apache2 -k start
19633 ? S 0:00 \_ /usr/sbin/apache2 -k start
19634 ? S 0:00 \_ /usr/sbin/apache2 -k start
19635 ? S 0:00 \_ /usr/sbin/apache2 -k start
19640 ? S 0:00 \_ /usr/sbin/apache2 -k start
19641 ? S 0:00 \_ /usr/sbin/apache2 -k start
19643 ? S 0:00 \_ /usr/sbin/apache2 -k start
19644 ? S 0:00 \_ /usr/sbin/apache2 -k start
19645 ? S 0:00 \_ /usr/sbin/apache2 -k start
19646 ? S 0:00 \_ /usr/sbin/apache2 -k start
19647 ? S 0:00 \_ /usr/sbin/apache2 -k start
19656 ? S 0:00 \_ /usr/sbin/apache2 -k start
19657 ? S 0:00 \_ /usr/sbin/apache2 -k start
19658 ? S 0:00 \_ /usr/sbin/apache2 -k start
19659 ? S 0:00 \_ /usr/sbin/apache2 -k start
19660 ? S 0:00 \_ /usr/sbin/apache2 -k start
-- Update --
Gerade mal memtester laufen lassen.
Der kann wunderbar 8 GB RAM nutzen.
Kaputt wird er wohl also nicht sein.
Last edited by a moderator: