Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Apache, Lighttpd, nginx, Cherokee
ruffy85
Posts: 9
Joined: 2007-02-28 21:34

Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by ruffy85 » 2007-03-06 14:17

Hallo,

nachdem der vServer nun soweit rennt, alle Dienste arbeiten einwandfrei, will ich ihn natürlich optimieren. Vor allem die Speicherauslastung von ca. 60%, wenn alles rennt, stört mich. Zu Mal es zeitweise dazu kommt, dass die Auslastung auf 75% steigt und confixx dann spinnt (Lizenz ist ungültig, lässt sich nicht mehr aktivieren wegen zu wenig Speicher).

Meine ersten Ansätze waren Apache2 und MySQL, habe versucht sie minimal zu konfigurieren, aber sie verbrauchen meiner Meinung nach noch immer viel zu viele Ressourcen. Aber vielleicht sind auch andere Dienste daran Schuld, daher würde ich mir gerne eure Meinung dazu einholen.

Zum System: Es ist ein vServer von Pretago (netclusive) mit 512MB RAM. Darauf installiert sind Apache2, PHP5, MySQL5, Teamspeak2, postfix, courier, procmail, Shoutcast, confixx 3.2.1, spamassassin

Habe mit einem Script mal die Daten zum Speicher der Maschine ausgelesen.

Code: Select all

VPS Speichernutzung:
Momentan genutzt:       278,258 MB
Zugesichert:            192 MB
Maximal nutzbar:        520 MB
Als nächstes folgt die Ausgabe von top, sortiert nach dem Speicherverbrauch.

Code: Select all

top - 14:08:54 up 40 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  53 total,   2 running,  51 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   8140620k total,  7551816k used,   588804k free,   725844k buffers
Swap: 10241428k total,     1920k used, 10239508k free,  2585508k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14330 mysql     15   0  106m  14m 4808 S  0.0  0.2   0:00.23 mysqld
24142 root      16   0 33164  13m 7372 S  0.0  0.2   0:00.17 apache2
24146 www-data  16   0 35584  10m 4684 S  0.0  0.1   0:00.32 apache2
28455 www-data  15   0 35584  10m 4692 S  0.0  0.1   0:00.11 apache2
24151 www-data  15   0 33536  10m 4464 S  0.0  0.1   0:00.05 apache2
24147 www-data  16   0 33536  10m 4440 S  0.0  0.1   0:00.11 apache2
24148 www-data  15   0 33396  10m 4392 S  0.0  0.1   0:00.05 apache2
28518 www-data  15   0 33364 8928 2716 S  0.0  0.1   0:00.00 apache2
24149 www-data  15   0 33364 8924 2712 S  0.0  0.1   0:00.00 apache2
28519 www-data  15   0 33364 8924 2712 S  0.0  0.1   0:00.00 apache2
28460 www-data  16   0 33364 8788 2656 S  0.0  0.1   0:00.00 apache2
28461 www-data  16   0 33364 8788 2656 S  0.0  0.1   0:00.00 apache2
15761 root      15   0  8432 4976 1340 S  0.0  0.1   0:00.00 miniserv.pl
14262 bind      20   0 45848 2440 1632 S  0.0  0.0   0:00.00 named
Hierbei ist mir aufgefallen, dass viele apache2 Prozesse mit 10m+ Verbrauch gestartet sind.

Als nächstes die my.cnf von MySQL5.

Code: Select all

# The MySQL server
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K

[mysqldump]
quick
max_allowed_packet = 16M

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M
Und zu guter letzt die Konfiguration von Apache2.

Code: Select all

# prefork MPM
# StartServers ......... number of server processes to start
# MinSpareServers ...... minimum number of server processes which are kept spare
# MaxSpareServers ...... maximum number of server processes which are kept spare
# MaxClients ........... maximum number of server processes allowed to start
# MaxRequestsPerChild .. maximum number of requests a server process serves
<IfModule prefork.c>
StartServers         5
MinSpareServers      5
MaxSpareServers     10
MaxClients          10
MaxRequestsPerChild  10

# pthread MPM
# StartServers ......... initial  number of server processes to start
# MaxClients ........... maximum  number of server processes allowed to start
# MinSpareThreads ...... minimum  number of worker threads which are kept spare
# MaxSpareThreads ...... maximum  number of worker threads which are kept spare
# ThreadsPerChild ...... constant number of worker threads in each server process
# MaxRequestsPerChild .. maximum  number of requests a server process serves
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
bei Apache2 setze ich wegen mod_php die prefork mpm ein.

Ich möchte den Ressourcenverbrauch weiter senken, damit zu spitzenzeiten die Auslastung nicht in den roten Bereich rutscht und confixx rumspinnt.

Hierzu noch die Ausgabe von virtuozzo, damit ihr seht, wo der Schuh drückt.

Code: Select all

privvmpages	72,240	131,072	133,120	4KB pages	Memory allocation limit
Das läuft immer in den roten Bereich.

kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by kase » 2007-03-06 19:48

ruffy85 wrote:Vor allem die Speicherauslastung von ca. 60%, wenn alles rennt, stört mich.
ruffy85 wrote: Zum System: Es ist ein vServer von Pretago (netclusive) mit 512MB RAM.
ruffy85 wrote: Darauf installiert sind Apache2, PHP5, MySQL5, Teamspeak2, postfix, courier, procmail, Shoutcast, confixx 3.2.1, spamassassin
Ich denke, die 3 Zitate sind selbsterklärend. Du musst außerdem noch bedenken, dass du nur 192 MB sicheren Ram hast, und nicht 512 MB, sprich ab 192 MB fängt der Kernel unter Umständen an Prozesse zu killen.

Weniger Apache Prozesse = MaxClients 10 noch weiter runter setzen.

MaxRequestsPerChild 10 ist viel viel viel zu wenig, häng da mal 2-3 Nullen dran, sonst ist dein Webserver ja nur noch mit Prozesse spawnen und killen beschäftigt.

ruffy85
Posts: 9
Joined: 2007-02-28 21:34

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by ruffy85 » 2007-03-06 23:46

Vielen Dank für die schnelle Antwort. Ist halt nach der Neuinstalltion nun Alles etwas anders, der Server läuft generell besser als bei der Installation durch pretago vor einem Jahr, aber er war mir zu unsicher.

Nur damals lag die Speicherauslastung bei ca. 25% im Betrieb und das erreiche ich derzeit einfach nicht. Das ärgert mich sehr, mir würden schon ca. 40% reichen, denn dann weiß ich, dass ich nicht mehr die Grenze von 75% überschreiten werde wodurch confixx fehlerhaft läuft.

kase
Posts: 1031
Joined: 2002-10-14 22:56

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by kase » 2007-03-07 20:27

Naja, dein "top" ist ja relativ eindeutig.

Vor allem der Apache frisst sehr sehr viel Speicher. Ich vermute, dass das unter anderem am mod_php liegt, denn das vergrößert den Apache Prozess um einiges.

Vielleicht wäre es für dich sogar interessant, PHP als CGI oder FCGI mit ganz wenigen PHP Prozessen zu benutzen, denn das würde deine Apache Prozesse wesentlich verkleinern, bzw du könntest sogar mpm_worker nehmen, und hättest dann nur noch 2-3 Prozesse.

Ansonsten, wenn deine Seite nicht so extrem besucht ist, kannst du auch ruhig MaxClients noch weiter runter setzen (zumindest zum Testen), denn 10 konkurrente User sind ja gar nicht sooo wenig.

rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by rootsvr » 2007-03-08 13:54

Confixx abschalten und statt Apache lighttpd installieren.

Lighty frisst bei mir knapp 2 MB + 20 MB für 4 PHP Instanzen..

ruffy85
Posts: 9
Joined: 2007-02-28 21:34

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by ruffy85 » 2007-03-13 23:36

Es laufen gleichzeitig derzeit fünf Webseiten, die unterschiedlich stark besucht sind. Es liegen auch einige Dateien zum Download bereit. Muss schon mit einer drei bis vierstelligen Besucherzahl insgesamt rechnen.

Da ich demnächst Speicherplatz verkaufen will, werde ich confixx weiterhin benötigen. Dadurch wird die Anzahl an gleichzeitigen Benutzern weiter steigen.

Werde mal schauen, wo ich bei php noch einsparen kann. Da scheint im Zusammenhang mit Apache das meiste Potenzial zur Einsparung zu liegen.

Gibt es dabei Limits zu beachten? Es laufen mehrere php Anwendungen, u.a. CMS und Foren. Es sollte nicht passieren, dass die Probleme machen, weil ich irgendwo zu wenig Ressourcen frei gebe.

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by Roger Wilco » 2007-03-14 00:36

Verstehe ich das richtig? Du willst auf deinem vServer mit gerade mal 192 MB RAM auch noch andere Leute hosten? Für Geld? :roll:

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by flo » 2007-03-14 07:05

ruffy85 wrote:Es laufen mehrere php Anwendungen, u.a. CMS und Foren. Es sollte nicht passieren, dass die Probleme machen, weil ich irgendwo zu wenig Ressourcen frei gebe.
vServer sind doch keine shared-Hosting-Umgebungen! Sobald das Teil produktiv geht, schlafen Deinen Usern die Füsse ein.

flo.

elch_mg
Posts: 302
Joined: 2006-01-23 19:14
Location: 41063

Re: Speicherauslastung vom vServer deutlich reduzieren - aber wie?

Post by elch_mg » 2007-03-14 10:38

wie schon mehrere Leute erwähnt haben: vServer stinken. Zumindest für sowas...
Reicht denn das Geld wirklich nicht für eine ordentliche Büchse?