Freigabe von nicht mehr benötigten Ressourcen

Apache, Lighttpd, nginx, Cherokee
jochen35
Posts: 9
Joined: 2014-08-27 13:58

Freigabe von nicht mehr benötigten Ressourcen

Post by jochen35 » 2014-08-31 11:40

Hallo,

ich habe einen vServer (KVM) mit 512 MB RAM auf dem unter anderem Nginx, MySQL und PHP läuft. Trotz des geringen Hauptspeichers läuft der Server recht flott. Ich bin natürlich darauf bedacht, dass der Server möglichst wenig Hauptspeicher benötigt.

Nun ist mir aufgefallen, dass einige PHP-Prozesse weiter laufen, obwohl diese nicht mehr benötigt werden und MySQL scheint einmal belegten Hauptspeicher nicht mehr freizugeben. Es ist also so, dass der Server mehr Hauptspeicher belegt je länger er läuft, obwohl die Anzahl der Zugriffe gleichgeblieben ist. Kann man das System daraufhin optimieren, dass die nicht mehr benötigten Ressourcen automatisch wieder freigegeben werden oder macht das eventuell keinen Sinn?

Hier noch die Ausgabe von top:

Code: Select all

 top - 11:26:46 up 1 day, 12:19,  1 user,  load average: 0,17, 0,14, 0,09
Tasks:  86 total,   2 running,  84 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7,1 us,  0,0 sy,  0,0 ni, 92,9 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:    508940 total,   501456 used,     7484 free,    12952 buffers
KiB Swap:  1045500 total,   174700 used,   870800 free,    82936 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
23481 root      20   0  357m 231m 3080 R   0,0 46,6   2:36.28 ajenti-panel
 3170 mysql     20   0  490m  53m 4320 S   0,0 10,7   7:53.10 mysqld
 3991 www-data  20   0  246m  40m  20m S   0,0  8,2   1:33.10 php5-fpm
11795 www-data  20   0  195m  31m  20m S   0,0  6,4   1:18.29 php5-fpm
 3976 www-data  20   0  190m  30m  19m S   0,0  6,1   0:55.65 php5-fpm
 8473 www-data  20   0  188m  27m  18m S   0,0  5,5   0:53.01 php5-fpm
 4606 www-data  20   0  188m  26m  17m S   0,0  5,3   1:31.49 php5-fpm
 4593 www-data  20   0  182m 8220 6088 S   0,0  1,6   0:04.41 php5-fpm
 3975 www-data  20   0  181m 7592 6412 S   0,0  1,5   0:04.98 php5-fpm
14256 www-data  20   0  182m 6344 5276 S   0,0  1,2   0:04.35 php5-fpm
 3962 www-data  20   0 70580 3340 1892 S   0,0  0,7   0:07.40 nginx
 1893 root      20   0 51456 3016 1148 S   0,0  0,6   0:11.37 munin-node
17841 root      20   0 71292 2364 1476 S   6,8  0,5   0:01.01 sshd
 3972 root      20   0  179m 1916  708 S   0,0  0,4   0:06.98 php5-fpm
17847 root      20   0 19736 1772 1184 S   0,0  0,3   0:00.09 bash
 3387 root      20   0 52456 1656  888 S   0,0  0,3   0:28.75 supervisord
29459 root      20   0 23416 1564 1124 R   6,8  0,3   0:00.54 top
 3265 root      20   0 67892 1524 1160 S   0,0  0,3   0:00.00 nginx
 2245 root      20   0 32240 1504  564 S   0,0  0,3   0:00.21 authdaemond
 3973 www-data  20   0  179m 1464  308 S   0,0  0,3   0:00.00 php5-fpm
 3974 www-data  20   0  179m 1460  308 S   0,0  0,3   0:00.00 php5-fpm
 3977 www-data  20   0  179m 1460  308 S   0,0  0,3   0:00.00 php5-fpm
 2571 greylist  20   0 31976 1312 1312 S   0,0  0,3   0:00.03 greylistd
 2034 root      20   0 52936 1128  756 S   0,0  0,2   0:01.21 rsyslogd
 2247 root      20   0 31428  852  572 S   0,0  0,2   0:00.15 authdaemond
 2244 root      20   0 31428  828  564 S   0,0  0,2   0:00.13 authdaemond
 2246 root      20   0 31428  816  564 S   0,0  0,2   0:00.09 authdaemond
 2248 root      20   0 31428  816  564 S   0,0  0,2   0:00.12 authdaemond
 3933 root      20   0 25444  736  732 S   0,0  0,1   0:00.00 pure-ftpd
 2365 root      20   0 20648  700  596 S   0,0  0,1   0:00.55 cron
    1 root      20   0 10648  620  588 S   0,0  0,1   0:02.14 init
 3473 root      20   0 16496  620  616 S   0,0  0,1   0:00.00 getty
 3474 root      20   0 16496  620  616 S   0,0  0,1   0:00.00 getty
 3475 root      20   0 16496  620  616 S   0,0  0,1   0:00.00 getty
 3476 root      20   0 16496  620  616 S   0,0  0,1   0:00.00 getty
 3477 root      20   0 16496  620  616 S   0,0  0,1   0:00.00 getty
 3478 root      20   0 16496  620  616 S   0,0  0,1   0:00.00 getty
 2321 root      20   0  8296  616  544 S   0,0  0,1   0:00.06 couriertcpd
 2297 root      20   0  8296  592  544 S   0,0  0,1   0:00.07 couriertcpd
 2214 root      20   0 23000  580  536 S   0,0  0,1   0:00.02 authdaemond
 3283 Debian-e  20   0 46804  556  464 S   0,0  0,1   0:00.06 exim4
  280 root      20   0 21360  544  544 S   0,0  0,1   0:00.03 udevd
 3354 root      20   0 49932  544  456 S   0,0  0,1   0:00.00 sshd
 1597 root      20   0  9960  516  308 S   0,0  0,1   0:00.00 dhclient
 2262 root      20   0  8296  504  500 S   0,0  0,1   0:00.00 couriertcpd
 2335 root      20   0  8296  504  500 S   0,0  0,1   0:00.00 couriertcpd
 2712 mysql     20   0  4180  488  484 S   0,0  0,1   0:00.01 mysqld_safe
 2320 root      20   0  6356  416  344 S   0,0  0,1   0:00.04 courierlogger
 2296 root      20   0  6356  404  340 S   0,0  0,1   0:00.05 courierlogger
 2073 root      20   0  4116  396  392 S   0,0  0,1   0:00.00 acpid
 2213 root      20   0  6356  344  340 S   0,0  0,1   0:00.00 courierlogger
  401 root      20   0 21352  320  316 S   0,0  0,1   0:00.00 udevd
  400 root      20   0 21312  284  280 S   0,0  0,1   0:00.00 udevd
 2261 root      20   0  6356  228  224 S   0,0  0,0   0:00.00 courierlogger
 2334 root      20   0  6356  228  224 S   0,0  0,0   0:00.00 courierlogger
 2396 messageb  20   0 29804  140  136 S   0,0  0,0   0:00.00 dbus-daemon
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S   0,0  0,0   0:02.04 ksoftirqd/0
    5 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kworker/u:0
    6 root      rt   0     0    0    0 S   0,0  0,0   0:00.00 migration/0
    7 root      rt   0     0    0    0 S   0,0  0,0   0:01.03 watchdog/0
    8 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 cpuset
    9 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 khelper
   10 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kdevtmpfs
   11 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 netns
   12 root      20   0     0    0    0 S   0,0  0,0   0:00.27 sync_supers
   13 root      20   0     0    0    0 S   0,0  0,0   0:00.01 bdi-default
   14 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kintegrityd
   15 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kblockd
   16 root      20   0     0    0    0 S   0,0  0,0   0:06.71 kworker/0:1
   17 root      20   0     0    0    0 S   0,0  0,0   0:00.06 khungtaskd
   18 root      20   0     0    0    0 S   0,0  0,0   0:02.46 kswapd0
   19 root      25   5     0    0    0 S   0,0  0,0   0:00.00 ksmd
   20 root      20   0     0    0    0 S   0,0  0,0   0:00.00 fsnotify_mark
   21 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 crypto
  132 root      20   0     0    0    0 S   0,0  0,0   0:10.12 jbd2/vda1-8
  133 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 ext4-dio-unwrit
  142 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kworker/u:1
  410 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kpsmoused
  418 root      20   0     0    0    0 S   0,0  0,0   0:00.00 vballoon
  419 root      20   0     0    0    0 S   0,0  0,0   0:00.00 khubd
  421 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 ata_sff
  449 root      20   0     0    0    0 S   0,0  0,0   0:00.00 scsi_eh_0
  450 root      20   0     0    0    0 S   0,0  0,0   0:00.00 scsi_eh_1
 1940 root      20   0     0    0    0 S   0,0  0,0   0:05.56 flush-254:0
12562 root      20   0     0    0    0 S   0,0  0,0   0:05.10 kworker/0:0


Gruß
Jochen

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Freigabe von nicht mehr benötigten Ressourcen

Post by Joe User » 2014-08-31 14:49

Der Ressourcenfresser Nummer 1 ist bei Dir ajenti, welches mal eben den halben RAM belegt.
Danach folgt PHP-FPM welches sich bei Bedarf den ganzen RAM krallen kann.
MySQL ist dagegen mit rund 55MB sehr sparsam.

Du solltest also ajenti loswerden und auf Apache24+mod_php55 wechseln, dann hast Du wieder Luft.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: Freigabe von nicht mehr benötigten Ressourcen

Post by daemotron » 2014-08-31 23:32

jochen35 wrote:Es ist also so, dass der Server mehr Hauptspeicher belegt je länger er läuft, obwohl die Anzahl der Zugriffe gleichgeblieben ist. Kann man das System daraufhin optimieren, dass die nicht mehr benötigten Ressourcen automatisch wieder freigegeben werden oder macht das eventuell keinen Sinn?

Das ist tatsächlich normales Verhalten und durchaus so gewollt. Freier RAM um des freien RAMs willen nutzt niemandem etwas. Normalerweise krallt sich das Betriebssystem freien RAM für Caching-Zwecke (z. B. um Festplatten-I/O zu beschleunigen) - das dürfte bei einem VPS nun so nicht der Fall sein, aber MySQL beispielsweise führt einen Query Cache, in dem Abfrageergebnisse vorgehalten werden. Je länger der Server in Betrieb ist, desto eher ist der Cache bis an das konfigurierte Maximum heran gefüllt.

Eine gewisse Reserve an freiem oder leicht befreibaren RAM sollte natürlich da sein, damit kleinere Lastspitzen nicht sofort Swapping oder gar ein ENOMEM nach sich ziehen. Bei nicht gerade üppigen 512 MiB sehe ich da aber nicht viel mehr als ca. 10%, also 50 MB, die man sich freihalten sollte.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time