Server last geht hoch

Apache, Lighttpd, nginx, Cherokee
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Server last geht hoch

Post by pangaea »

Hallo,

hab ab und zu, meist so alle paar Tage folgendes Problem.

Die Serverlast geht hoch und ist irgendwann nicht mehr erreichbar. Wenn ichs noch merke komm ich noch per SSH drauf, apache restart dann geht die last langsam wieder runter, wenn ichs nicht mehrke hilft nur noch ein reboot.

Kurz vorm sterben schauts so aus:top - 11:55:25 up 2 days, 18:16, 1 user, load average: 42.38, 38.60, 32.48
Tasks: 247 total, 2 running, 245 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.4% us, 4.4% sy, 0.0% ni, 0.0% id, 86.8% wa, 0.7% hi, 2.7% si
Mem: 2025624k total, 2004556k used, 21068k free, 300k buffers
Swap: 3919840k total, 3262736k used, 657104k free, 35184k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
392 mysql 16 0 649m 63m 3284 S 1.0 3.2 6:46.44 mysqld
15632 wwwrun 17 0 154m 17m 3936 D 0.7 0.9 0:01.19 httpd2-prefork
8051 popuser 17 0 65472 4176 1192 D 0.5 0.2 0:00.82 spamd
15976 wwwrun 15 0 149m 17m 3956 S 0.5 0.9 0:00.66 httpd2-prefork
17899 wwwrun 17 0 136m 10m 3680 S 0.5 0.5 0:00.07 httpd2-prefork
230 root 15 0 0 0 0 S 0.2 0.0 3:25.74 kswapd0
2312 qmails 17 0 2608 384 296 D 0.2 0.0 0:12.67 qmail-send
14314 wwwrun 18 0 280m 29m 4084 D 0.2 1.5 0:16.15 httpd2-prefork
14481 wwwrun 17 0 275m 27m 3984 D 0.2 1.4 0:10.19 httpd2-prefork
14512 wwwrun 18 0 265m 29m 4072 D 0.2 1.5 0:10.38 httpd2-prefork
14553 wwwrun 18 0 280m 29m 3988 D 0.2 1.5 0:10.88 httpd2-prefork
14554 wwwrun 18 0 280m 30m 3988 D 0.2 1.5 0:11.11 httpd2-prefork
14584 wwwrun 17 0 281m 27m 4004 D 0.2 1.4 0:11.35 httpd2-prefork
15290 wwwrun 17 0 188m 49m 4116 D 0.2 2.5 0:04.09 httpd2-prefork
15334 wwwrun 16 0 188m 16m 3940 S 0.2 0.8 0:02.50 httpd2-prefork
15365 wwwrun 17 0 179m 13m 3920 D 0.2 0.7 0:02.16 httpd2-prefork
15399 wwwrun 16 0 188m 39m 3992 D 0.2 2.0 0:03.33 httpd2-prefork
15456 wwwrun 16 0 179m 13m 3920 S 0.2 0.7 0:02.12 httpd2-prefork
15828 wwwrun 17 0 149m 23m 3976 D 0.2 1.2 0:00.99 httpd2-prefork
15974 wwwrun 17 0 151m 13m 4008 S 0.2 0.7 0:00.42 httpd2-prefork
16028 wwwrun 16 0 152m 25m 4056 D 0.2 1.3 0:00.64 httpd2-prefork
16059 wwwrun 16 0 151m 14m 4084 S 0.2 0.7 0:00.51 httpd2-prefork
16227 wwwrun 16 0 145m 14m 3880 S 0.2 0.7 0:00.40 httpd2-prefork
16268 wwwrun 17 0 150m 18m 3908 R 0.2 0.9 0:00.49 httpd2-prefork
17433 wwwrun 15 0 143m 18m 3992 S 0.2 0.9 0:00.23 httpd2-prefork
17438 wwwrun 16 0 141m 16m 4020 S 0.2 0.8 0:00.16 httpd2-prefork
17942 mailman 16 0 37000 7592 2620 D 0.2 0.4 0:00.12 python
17941 mailman 16 0 37124 7668 2648 D 0.2 0.4 0:00.12 python

Restart:

s15221811:~ # /etc/init.d/apache2 restart
Syntax OK
Shutting down httpd2 (waiting for all children to terminate) done
Starting httpd2 (prefork) (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
startproc: exit status of parent of /usr/sbin/httpd2-prefork: 1
failed

Beim zweiten mal klappts dann

Dann schauts so aus:

top - 12:00:52 up 2 days, 18:21, 1 user, load average: 21.85, 35.76, 33.57
Tasks: 138 total, 2 running, 133 sleeping, 2 stopped, 1 zombie
Cpu(s): 22.6% us, 3.7% sy, 0.0% ni, 15.0% id, 57.8% wa, 0.3% hi, 0.7% si
Mem: 2025624k total, 397296k used, 1628328k free, 548k buffers
Swap: 3919840k total, 420396k used, 3499444k free, 68820k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18923 wwwrun 16 0 154m 38m 4032 S 21.6 2.0 0:01.00 httpd2-prefork
392 mysql 16 0 648m 62m 3264 S 1.0 3.2 6:47.98 mysqld
18928 wwwrun 17 0 0 0 0 Z 0.7 0.0 0:00.02 httpd2-prefork <defunct>
18981 wwwrun 16 0 149m 34m 4072 S 0.7 1.7 0:00.50 httpd2-prefork
1907 root 15 0 9260 584 400 S 0.3 0.0 0:07.95 syslog-ng
1 root 16 0 724 76 48 S 0.0 0.0 0:01.52 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/0
6 root 10 -5 0 0 0 S 0.0 0.0 0:00.13 khelper
7 root 10 -5 0 0 0 S 0.0 0.0 0:00.07 kthread
10 root 10 -5 0 0 0 S 0.0 0.0 0:24.97 kblockd/0
11 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
231 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
230 root 15 0 0 0 0 S 0.0 0.0 3:28.66 kswapd0
234 root 10 -5 0 0 0 S 0.0 0.0 0:01.73 xfslogd/0
232 root 15 0 0 0 0 S 0.0 0.0 0:00.00 cifsoplockd
233 root 15 0 0 0 0 S 0.0 0.0 0:00.00 cifsdnotifyd
235 root 10 -5 0 0 0 S 0.0 0.0 0:03.45 xfsdatad/0
822 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
891 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
895 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
896 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
940 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kcryptd/0
941 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kmirrord
952 root 10 -5 0 0 0 S 0.0 0.0 0:08.12 md8_raid1
956 root 10 -5 0 0 0 S 0.0 0.0 0:00.04 md7_raid1
960 root 10 -5 0 0 0 S 0.0 0.0 0:15.00 md6_raid1
964 root 10 -5 0 0 0 S 0.0 0.0 0:02.51 md5_raid1
968 root 10 -5 0 0 0 S 0.0 0.0 0:07.14 md1_raid1
969 root 15 0 0 0 0 S 0.0 0.0 0:02.48 kjournald
1066 root 10 -5 0 0 0 S 0.0 0.0 0:00.69 xfsbufd
1067 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 xfssyncd


Mit der zeit geht die Last dann wieder runter auf 1-2.

Hab soweit optimiert, was ich so zu optimieren hier im Forum gefunden habe.

die server tuning:
<IfModule prefork.c>
# number of server processes to start
StartServers 5
# minimum number of server processes which are kept spare
MinSpareServers 5
# maximum number of server processes which are kept spare
MaxSpareServers 8
# highest possible MaxClients setting for the lifetime of the Apache process.
ServerLimit 256
# maximum number of server processes allowed to start
MaxClients 256
# maximum number of requests a server process serves
MaxRequestsPerChild 10000
</IfModule>

KeepAlive On
MaxKeepAliveRequests 250
KeepAliveTimeout 10


Danke für alle Tipps.

Gruß
Harry
mattiass
Userprojekt
Userprojekt
Posts: 608
Joined: 2005-12-16 17:57

Re: Server last geht hoch

Post by mattiass »

pangaea wrote:

Code: Select all

Mem:   2025624k total,  2004556k used,    21068k free,      300k buffers
Swap:  3919840k total,  3262736k used,   657104k free,    35184k cached
Hier liegt das Problem. Drei Gigabyte Swap, die ständig aus- und wieder eingelagert werden müssen. Swappen bremst aus: da geht die Load hoch, ohne dass die CPU arbeiten kann...

Wie kommt es, dass da einzelne Apache-Prozesse 250MB RAM beanspruchen? Was für Module sind aktiv? Was für Scriptsprachen werden als Module geladen?
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

Module:
# as listed in APACHE_MODULES (/etc/sysconfig/apache2)

LoadModule access_module /usr/lib64/apache2-prefork/mod_access.so
LoadModule actions_module /usr/lib64/apache2-prefork/mod_actions.so
LoadModule alias_module /usr/lib64/apache2-prefork/mod_alias.so
LoadModule auth_module /usr/lib64/apache2-prefork/mod_auth.so
LoadModule auth_dbm_module /usr/lib64/apache2-prefork/mod_auth_dbm.so
LoadModule autoindex_module /usr/lib64/apache2-prefork/mod_autoindex.so
LoadModule cgi_module /usr/lib64/apache2-prefork/mod_cgi.so
LoadModule dir_module /usr/lib64/apache2-prefork/mod_dir.so
LoadModule env_module /usr/lib64/apache2-prefork/mod_env.so
LoadModule expires_module /usr/lib64/apache2-prefork/mod_expires.so
LoadModule include_module /usr/lib64/apache2-prefork/mod_include.so
LoadModule log_config_module /usr/lib64/apache2-prefork/mod_log_config.so
LoadModule mime_module /usr/lib64/apache2-prefork/mod_mime.so
LoadModule negotiation_module /usr/lib64/apache2-prefork/mod_negotiation.so
LoadModule setenvif_module /usr/lib64/apache2-prefork/mod_setenvif.so
LoadModule ssl_module /usr/lib64/apache2-prefork/mod_ssl.so
LoadModule userdir_module /usr/lib64/apache2-prefork/mod_userdir.so
LoadModule php4_module /usr/lib64/apache2-prefork/libphp4.so
LoadModule perl_module /usr/lib64/apache2/mod_perl.so
LoadModule python_module /usr/lib64/apache2/mod_python.so
LoadModule frontpage_module /usr/lib64/apache2/mod_frontpage.so
LoadModule rewrite_module /usr/lib64/apache2-prefork/mod_rewrite.so
LoadModule suexec_module /usr/lib64/apache2-prefork/mod_suexec.so
#



dnake
mattiass
Userprojekt
Userprojekt
Posts: 608
Joined: 2005-12-16 17:57

Re: Server last geht hoch

Post by mattiass »

pangaea wrote:Module:
dnake
Ist eigentlich eine simple Rechenaufgabe: Du hast 6GB virtuellen Speicher, drei davon real. Ich gehe davon aus, dass gut die Hälfte des von einem Apache beanspruchten Speichers auch wirklich speicherresident sein muss. Beim Rest gehe ich davon aus, dass es eher selten benötigte Speicherseiten sind, bspw. kaum benutzte Module, die ohne größe Probleme geswappt werden können...

Bei 200MB pro Apache-Prozess kannst Du also von 100MB speicherresident ausgehen, damit ist bei mehr als 20 Apache-Prozessen die kritische Schwelle erreicht. Wenn Du den Speicherbedarf nicht herunterbekommst, musst Du die Maximalzahl an Prozessen auc ca. 20 bis 30 beschränken.

Nun sind 200MB pro Apache einiges, schon die 140MB nach dem Start kommen mir sehr viel vor. Ich meine mich zu erinnern, dass einige PHP4-Versionen als Modul unter Apache fleissig Speicher gefressen und nicht wieder freigegeben haben.

Ein Workaround für dieses Problem könnte sein, die Anzahl der Requests einzuschränken, die eine Apache bedient, bevor er stirbt.

Mittelfristig wirst Du wahrscheinlich nicht umhinkommen, den Speicherbedarf einzelner Prozesse zu reduzieren, bspw. indem Du PHP auf FastCGI auslagerst oder testweise Apache 2.2 mit PHP5 ausprobierst (Du kannst den 2.2er parallel installieren, auf einem anderen Port lauschen lassen und den alten als Reverse-Proxy verwenden).

Noch drei Fragen: welche Distribution in welcher Version? Welche Apache-Version? Welche PHP-Version?

EDIT: Noch eine Frage: gibt es einen Grund, Apache mit separaten Kindprozessen zu verwenden, anstatt den Server "threaded" laufen zu lassen? Dass dürfte zumindest bei hohem Speicherbedarf pro Instanz schon einmal einiges ausmachen...
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

Danke erst mal für Deine Ausführungen. Ich bin halt noch Laie in diesen Dingen. Ist eigentlich auch nicht mein Job, aber ich will halt dass mein Shop gut läuft.

Daher kann ich dir:
Noch eine Frage: gibt es einen Grund, Apache mit separaten Kindprozessen zu verwenden, anstatt den Server "threaded" laufen zu lassen? Dass dürfte zumindest bei hohem Speicherbedarf pro Instanz schon einmal einiges ausmachen...

nicht beantworten, da ich nicht weiss wie ich das ändern kann. bzw was da die Vor und Nachteile sind.

Ich hatte auch mal das Apache Cache Modul geladen, aber ich weiss nicht, ob Plesk das nicht wieder überschreiben hatt, da es ja in der geposteten Config nicht drin war.

Betriebssystem Linux 2.6.16.20-060620b
bind 9.3.1-3
coldfusion Komponente wurde nicht installiert
coldfusion-support Komponente wurde nicht installiert
courier-imap 3.0.8-suse9.3.build80060614.16
frontpage 5.0.2.2634
httpd 2.0.53-9.10
mailman 2.1.5-16.6
mod_perl 2.0.0-4
mod_python 3.1.3-42
mysql 4.1.10a-3.6
perl-Apache-ASP 2.57-suse9.3.build80060614.16
php 4.3.10-14.23
postgresql-server Komponente wurde nicht installiert
psa 8.0.1-suse9.3.build80060614.16
psa-api-rpc 8.0.1-suse9.3.build80060614.16
psa-autoinstaller 3.0.2-build060526.14
psa-backup-manager 8.0.1-suse9.3.build80060614.16
psa-horde 3.1.1-suse9.3.build80060614.16
psa-imp 4.1.1-suse9.3.build80060614.16
psa-logrotate 3.7-suse9.3.build80060614.16
psa-manual-custom-skin-guide 8.0.1-suse9.3.build80060614.16
psa-migration-manager 8.0.1-suse9.3.build80060614.16
psa-proftpd 1.3.0-suse9.3.build80060614.16
psa-qmail 1.03-suse9.3.build80060614.16
psa-qmail-rblsmtpd 0.70-suse9.3.build80060614.16
psa-spamassassin 8.0.1-suse9.3.build80060614.16
psa-tomcat-configurator Komponente wurde nicht installiert
psa-turba 2.1.1-suse9.3.build80060614.16
samba Komponente wurde nicht installiert
spamassassin 3.0.4-1.3
SSHTerm 0.2.2-suse9.3.build80060614.16
tomcat Komponente wurde nicht installiert
webalizer 2.01-728.2

Ich möchte allerdings ungern an den php versionen was umstellen, da, als ich auf den neuen 64 Bit server upgegradet habe, schon die Shopsoftware nicht lief.

Im nomalbetrieb schaut top so aus:
top - 15:14:24 up 3 days, 21:35, 1 user, load average: 1.46, 1.20, 1.49
Tasks: 124 total, 7 running, 116 sleeping, 0 stopped, 1 zombie
Cpu(s): 83.1% us, 16.9% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 2025624k total, 1289064k used, 736560k free, 5472k buffers
Swap: 3919840k total, 403876k used, 3515964k free, 362560k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6551 wwwrun 16 0 171m 46m 4072 S 52.0 2.3 0:03.40 httpd2-prefork
6636 wwwrun 16 0 150m 24m 4020 R 13.9 1.2 0:00.24 httpd2-prefork
9792 mysql 15 0 619m 144m 3976 S 12.7 7.3 11:09.72 mysqld
6629 wwwrun 16 0 158m 32m 4104 R 12.7 1.6 0:02.32 httpd2-prefork
6675 wwwrun 15 0 158m 33m 4104 S 9.8 1.7 0:01.33 httpd2-prefork
6733 root 16 0 4420 1204 868 R 0.6 0.1 0:00.01 top
1 root 16 0 724 72 48 S 0.0 0.0 0:01.56 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 R 0.0 0.0 0:00.14 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/0
6 root 10 -5 0 0 0 S 0.0 0.0 0:00.16 khelper
7 root 10 -5 0 0 0 S 0.0 0.0 0:00.07 kthread
10 root 10 -5 0 0 0 S 0.0 0.0 0:29.96 kblockd/0
11 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
231 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
230 root 15 0 0 0 0 S 0.0 0.0 4:01.53 kswapd0
234 root 10 -5 0 0 0 S 0.0 0.0 0:02.38 xfslogd/0
232 root 15 0 0 0 0 S 0.0 0.0 0:00.00 cifsoplockd
233 root 15 0 0 0 0 S 0.0 0.0 0:00.00 cifsdnotifyd
235 root 10 -5 0 0 0 S 0.0 0.0 0:04.74 xfsdatad/0
822 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
891 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
895 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
896 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
940 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kcryptd/0
941 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kmirrord
952 root 10 -5 0 0 0 S 0.0 0.0 0:11.11 md8_raid1
956 root 10 -5 0 0 0 S 0.0 0.0 0:00.04 md7_raid1
960 root 10 -5 0 0 0 S 0.0 0.0 0:22.51 md6_raid1
964 root 10 -5 0 0 0 S 0.0 0.0 0:03.50 md5_raid1
968 root 10 -5 0 0 0 S 0.0 0.0 0:10.06 md1_raid1
969 root 15 0 0 0 0 S 0.0 0.0 0:03.25 kjournald
1066 root 10 -5 0 0 0 S 0.0 0.0 0:00.84 xfsbufd
1067 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 xfssyncd
1069 root 10 -5 0 0 0 S 0.0 0.0 0:02.08 xfsbufd
1070 root 10 -5 0 0 0 S 0.0 0.0 0:00.15 xfssyncd


danke.

Gruß
Harry
mattiass
Userprojekt
Userprojekt
Posts: 608
Joined: 2005-12-16 17:57

Re: Server last geht hoch

Post by mattiass »

pangaea wrote:
Die Serverlast geht hoch und ist irgendwann nicht mehr erreichbar. Wenn ichs noch merke komm ich noch per SSH drauf, apache restart dann geht die last langsam wieder runter, wenn ichs nicht mehrke hilft nur noch ein reboot.
Anderer Ansatz für die Problemlösung: wieviele Shops laufen auf dem Server? Wieviele Pageviews muss das Ding pro Tag etwa verkraften? Wieviele Einzelartikel werden angeschaut...

Es kann sein, dass es genügt, die maximale Anzahl an Servern auf 20 bis 50 herunterzunehmen und die Anzahl der beantworteten Requests pro Server vielleicht von 10.000 auf 5.000. Wenn dann "mit Speicher vollgefressene" Apaches früher sterben und von "frischen" mit halbem Speicherbedarf ersetzt werden, gammeln nicht mehr soviele vollgefressene Apaches rum und beanspruchen den ganzen Speicher...

Immer nur an einer Schraube drehen, testen und Tests auswerten. Du kannst auch mal einen Cronjob immer "top > last.txt" schreiben lassen (top arbeitet auch im Batchmode) und dann auch PIDs vergleichen...
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

Es sind zwei Hauptseiten, neben dem shop ist noch ne zweite gut besuchte seite drauf, und ein paar die so vor sich hin dümpeln. Alldings ists ja komisch, und das ist was mich ebensoirritiert. Dass nicht jeden Abend oder am Wochenende wenn die Last hochgeht, der server stirbt. Sondern nur so ab und zu schaukelt sich irgendwas hoch, was dann nicht mehr weggeht. Starte den apache derzeit zwei mal täglich neu so als notlösung.

Die zwei wichtigsten seiten haben:

Der shop:
Hits Bytes Visits PViews Month
2006
3,603,958 45,594,832,175 91,507 800,329 Jul 2006
2,840,672 41,359,175,041 62,096 697,398 Aug 2006
3,496,083 48,723,543,730 79,928 832,670 Sep 2006


und die andere Seite:
Hits Bytes Visits PViews Month

2006
1,177,143 22,883,340,461 38,436 584,256 Jul 2006
922,775 24,504,304,401 24,176 525,395 Aug 2006
802,037 19,552,919,370 19,026 472,226 Sep 2006

danke

Gruß
Harry
mattiass
Userprojekt
Userprojekt
Posts: 608
Joined: 2005-12-16 17:57

Re: Server last geht hoch

Post by mattiass »

pangaea wrote:

Code: Select all

Der shop:
 Hits               Bytes      Visits      PViews      Month
2006  
   3,496,083      48,723,543,730      79,928     832,670   Sep 2006  


und die andere Seite:
    Hits               Bytes      Visits      PViews      Month
2006  
   1,177,143      22,883,340,461      38,436     584,256   Jul 2006  
Jetzt rechne ein wenig: gehen wir von einer Connection pro Hit aus und davon, dass alle Requests auf nur 10 Stunden am Tag verteilt sind. Dann kommen beide Seiten zusammen auf 130.000 Requests pro Tag oder 13.000 pro Stunde. Bei 30 gleichzeitig aktiven Servern läuft jeder Serverprozess so mehrere Tage durch. In dieser Zeit scheint Dein PHP (vielleicht irgendein unsauber programmiertes Modul) viel Speicher zu besetzen.

Probier zuerst mal

Code: Select all

 MaxRequestsPerChild 10000
auf

Code: Select all

MaxRequestsPerChild 2000
oder gar

Code: Select all

MaxRequestsPerChild 1000
zu beschränken. Das sorgt dafür, dass sich alte Apache-Prozesse schneller beenden und "frische" gespawned werden. Es sollte aber auch den Effekt haben, dass zu Zeiten, in denen die Last heruntergeht, unbenutzte Apaches schneller entsorgt werden.

Mache wie oben erwähnt dann mal viertelstündliche Übersichten über alle Prozesse mit "top" und "ps -waux" und werte per Script aus, wie lange einzelne Apache-Prozesse leben und wie fett sie dabei noch werden.

Ich vermute, dass Du auch die Anzahl der gleichzeitig aktiven Prozesse etwas herunternehmen musst, aber probier zuerst mal das gerade beschriebene...
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

danke, o.k. ich lass mal den cron laufen, allerdings weiss ich nicht wie ich das per script auswerten soll,

sorry wenn ich mich blöd anstelle ..

Gruß

Harry
mattiass
Userprojekt
Userprojekt
Posts: 608
Joined: 2005-12-16 17:57

Re: Server last geht hoch

Post by mattiass »

pangaea wrote:danke, o.k. ich lass mal den cron laufen, allerdings weiss ich nicht wie ich das per script auswerten soll,
Halb so wild. Du kannst auch einfach anhand der niedgristen Apache-PID schauen, wie lange ein Prozess aktiv ist, bis er ersetzt wird... So mit den Äuglein: 8O
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

Das mit dem cron hat leider irgendwie nicht hingehauen. Also hab ich mich heute abend mal "top" statt RTL angekuckt :-)

Es ist wirklich komisch, weil wie gesagt es unter vollast keine probleme gibt, die seite laden rucki zucki, nur dann kann es sein dass der mysql zu spinnen anfängt

Der shop mailt mir dann ne fehlermeldung:
ql error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql error no: 2002

Script: /shop/shop.php?

Obwohl der shop im browser noch läuft. Nur schaukelt sich das halt irgendwie hoch und der server nippelt dann ganz ab. Dann brauchen einzelne httpd prozesse 25% cpu z.b.

mysql pconnects sind schon abgeschalten.

Ich glaub ja schon fast an DOS Attacke der Konkurenz ?!?

Gruß
Harry
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

noch was. kann mich dann in dem Fall auch nicht mehr per POP einloggen.
User avatar
daemotron
Administrator
Administrator
Posts: 2636
Joined: 2004-01-21 17:44

Re: Server last geht hoch

Post by daemotron »

MattiasS wrote:EDIT: Noch eine Frage: gibt es einen Grund, Apache mit separaten Kindprozessen zu verwenden, anstatt den Server "threaded" laufen zu lassen? Dass dürfte zumindest bei hohem Speicherbedarf pro Instanz schon einmal einiges ausmachen...
Ja, gibt es:
pangaea wrote:LoadModule php4_module /usr/lib64/apache2-prefork/libphp4.so
PHP als Apache-Modul ist nicht Thread-safe und läuft daher nur mit mpm-prefork stabil. Worker oder perchild lassen sich mit PHP nur einsetzen, wenn (Fast)CGI zum Einsatz kommt.

EDIT

Mit dem Tool apachetop kannst Du Dir sehr schön die Auslastung der einzelnen Apache-Prozesse anzeigen lassen (ähnlich wie top, aber eben mit Apache-spezifischen Angaben).

Ansonsten noch ne Frage: läuft auf dem Server nur der Shop, oder auch noch andere Internet-Präsenzen? Falls letzteres nicht der Fall ist, würde ich mich an Deiner Stelle von Plesk trennen, auf einem Minimal-System aufsetzen und Apache (dann konsequenterweise 2.2 worker) optimal auf die Bedürfnisse Deines Shops anpassen (wozu brauchst Du mod_python, mod_perl etc.)

Ggf. lohnt es sich, auch mal drüber nachzudenken, einen PHP-Bytecodecache wie eAccellerator, ionCube oder PHPA einzusetzen und das MySQL-Setup auf Optimierungspotenzial abzuklopfen. Wenn es dann immer noch Performance-Probleme gibt, kannst Du auch noch auf einen schlankeren Webserver (z. B. lighttpd) ausweichen.

Bei den 2 GB Arbeitsspeicher, über die Deine Kiste verfügt, sollte mindestens ein Drittel davon, eher die Hälfte für MySQL zur Verfügung stehen. Der Webserver dürfte auch nicht mehr als ein GB belegen. Wenn Du schon eine 4GB Swap-Partition brauchst, um überhaupt klarzukommen, hast Du definitiv zu wenig RAM. Du hast also nur die Chance, durch Optimierung den Speicherbedarf von Apache auf unter ein GB zu drücken - ansonsten kannst Du das nur durch mehr RAM lösen...
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

Hi,

ne, laufen noch andere Sachen auf. Bin also auf Plesk angewiesen.

Hab die SWAP datei mal beobachtet, das used der SWAP bleibt eigentlich immer gleich, nur ein teil der 3 gig die zur verfügung stünden, also glaub ich nicht dass da viel hin und her geschoben wird. Heute früh um 6 ist mir 3 mal der mysql gestorben, da war wirklich nix los auf dem server.

danke.

Gruß
Harry
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Server last geht hoch

Post by Roger Wilco »

jfreund wrote:PHP als Apache-Modul ist nicht Thread-safe und läuft daher nur mit mpm-prefork stabil. Worker oder perchild lassen sich mit PHP nur einsetzen, wenn (Fast)CGI zum Einsatz kommt.
Das stimmt in dieser Form nicht mehr so ganz. Die am häufigsten benutzten Erweiterungen lassen sich inzwischen auch in Umgebungen mit Threadsupport betreiben. Die entsprechenden Stellen in der PHP Doku wurden etwas entschärft. Im Zweifelsfall müsste man einfach evaluieren, ob die PHP-Erweiterungen, welche man benötigt, auch mit mod_php+mpm-worker laufen. Häufig ist das aber kein Problem.
Ein wichtiger Nachteil von mod_php im Zusammenhang mit mpm-prefork oder mpm-worker ist aber, dass der PHP-Parser die Skripte im Benutzerkontext des Webservers ausführt. Eine richtige Benutzertrennung ist damit also nur schwer zu realisieren.
User avatar
daemotron
Administrator
Administrator
Posts: 2636
Joined: 2004-01-21 17:44

Re: Server last geht hoch

Post by daemotron »

pangaea wrote:ne, laufen noch andere Sachen auf. Bin also auf Plesk angewiesen.
Auch auf die vielen Apache-Module, die bei Dir mitgeladen werden (mod_python, mod_perl, mod_frontpage, etc.)? Die kannst Du entrümpeln, ohne dass Dir Plesk dazwischen grätscht. Schau Dir mal /etc/sysconfig/apache2 an, insbesondere die Zeile APACHE_MODULES="..." - da kannst Du sicherlich einiges rauswerfen. Danach mit SuSEConfig die Konfigurationsdateien von Apache aktualisieren lassen und mit rcapache2 restart den Indianer neu starten. Danach mal mit ps auxnachschauen, wie viel Speicher ein Apache-Prozess dann noch verkonsumiert...
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

dnake für die antworten nochmals. Ich hab mal das mod perl und phyton raus, frontpage brauch ich für andere domains.

Im monet habe eher noch zusätzlich das problem dass sich der mysql einfach "mir nichts dir nichts" verabschiedet. Mal 3 mal in 3 stunden, mal alle paar tage.

Hab ja keinen plan, ab einfach nur der server überlastet ist damit, oder die shopsoftwrae einfach ne macke hat.

die httpds haben immer noch so 150 mb.

Die swap hab ich jetzt zumindest recht klein gekriegt.

was heisst eigentlich der Wert ID bei top bei der cpu. Momentaufnahme:
Cpu(s): 1.7% us, 0.7% sy, 0.0% ni, 95.0% id, 2.7% wa, 0.0% hi, 0.0% si

Und wie lege ich genau fest welcher wert des speichers mysql zur Verfügung steht?
ist das key_buffer?


Gruß
Harry
User avatar
daemotron
Administrator
Administrator
Posts: 2636
Joined: 2004-01-21 17:44

Re: Server last geht hoch

Post by daemotron »

'id' heißt idle - also Leerlauf.
pangaea
Posts: 16
Joined: 2006-09-06 19:30

Re: Server last geht hoch

Post by pangaea »

noch jemand ne idee warum mir dauernd der mysql stirbt

diese fehlermeldung ist häufig

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)


und neuerdings

Session Replace: Can't open file: 'oxsessions.MYI' (errno: 145)

das ist die sessiontabelle.

last ist normal denke ich

top - 21:20:02 up 1 day, 12:48, 2 users, load average: 0.31, 0.64,

0.62

Tasks: 126 total, 2 running, 124 sleeping, 0 stopped, 0 zombie

Cpu(s): 6.6% us, 1.7% sy, 0.0% ni, 91.7% id, 0.0% wa, 0.0% hi, 0.0% si

Mem: 2025624k total, 1429076k used, 596548k free, 13316k buffers

Swap: 3919840k total, 70772k used, 3849068k free, 656244k cached

bin echt am verzweifeln.
danke

Gruß
Harry
User avatar
daemotron
Administrator
Administrator
Posts: 2636
Joined: 2004-01-21 17:44

Re: Server last geht hoch

Post by daemotron »

pangaea wrote:

Code: Select all

Session Replace: Can't open file: 'oxsessions.MYI' (errno: 145) 
Das stinkt so'n bisschen nach einem korrupten Dateisystem. Hast Du das FS mal mit dem entsprechenden Tool durchgeprüft (e2fsck bei ext2/3, xfs_check bei XFS etc.)? Würde auch erklären, warum hin und wieder der Zugriff auf den Socket nicht hinhaut...