Apache memory leak (Apache 2 съедает всю память)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

mennanov
Сообщения: 16
ОС: mandriva 2008

Apache memory leak

Сообщение mennanov »

Заметил, что со временем (часа 2-3) после запуска сервера (апач запускается сразу как сервис) почти заканчивается память, судя по top:

root@centos ~

[root@centos ~]# top -bn 1 top - 19:36:52 up 4 days, 20:15, 1 user, load average: 0.01, 0.03, 0.00 Tasks: 69 total, 1 running, 68 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.3%id, 0.1%wa, 0.0%hi, 0.0%si, 0.5%st Mem: 262344k total, 218904k used, 43440k free, 32024k buffers Swap: 0k total, 0k used, 0k free, 82200k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 2060 596 508 S 0.0 0.2 0:00.02 init 2 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0 4 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 5 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 events/0 6 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper 9 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 async/mgr 21 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 xenwatch 22 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 xenbus 105 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 kblockd/0 113 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0 114 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux 115 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd 120 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd 123 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod 150 root 20 0 0 0 0 S 0.0 0.0 0:00.01 pdflush 151 root 20 0 0 0 0 S 0.0 0.0 0:00.02 pdflush 152 root 15 -5 0 0 0 S 0.0 0.0 0:00.03 kswapd0 153 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0 155 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 xfs_mru_cache 156 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 xfslogd/0 157 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 xfsdatad/0 158 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 xfsconvertd/0 159 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 crypto/0 774 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 net_accel/0 777 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 sfc_netfront/0 801 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused 810 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 usbhid_resumer 818 root 15 -5 0 0 0 S 0.0 0.0 0:00.01 kjournald 872 root 16 -4 2144 580 376 S 0.0 0.2 0:00.00 udevd 1886 root 20 0 1716 608 512 S 0.0 0.2 0:00.00 syslogd 1889 root 20 0 1668 392 324 S 0.0 0.1 0:00.00 klogd 1910 dbus 20 0 2744 696 544 S 0.0 0.3 0:00.00 dbus-daemon 1923 root 20 0 6988 1048 664 S 0.0 0.4 0:00.07 sshd 1934 root 20 0 2716 792 624 S 0.0 0.3 0:00.00 xinetd 1947 root 20 0 5080 500 240 S 0.0 0.2 0:00.00 vsftpd 2141 root 20 0 9000 1824 756 S 0.0 0.7 0:00.00 sendmail 2149 smmsp 20 0 8048 1476 612 S 0.0 0.6 0:00.00 sendmail 2170 root 20 0 5260 1100 564 S 0.0 0.4 0:00.00 crond 2189 root 20 0 2240 424 308 S 0.0 0.2 0:00.00 atd 2199 haldaemo 20 0 6920 4556 1112 S 0.0 1.7 0:00.06 hald 2200 root 20 0 3128 676 544 S 0.0 0.3 0:00.00 hald-runner 2210 root 20 0 1652 416 360 S 0.0 0.2 0:00.00 mingetty 2211 root 20 0 1652 416 360 S 0.0 0.2 0:00.00 mingetty 2212 root 20 0 1652 420 360 S 0.0 0.2 0:00.00 mingetty 2213 root 20 0 1652 416 360 S 0.0 0.2 0:00.00 mingetty 2214 root 20 0 1652 420 360 S 0.0 0.2 0:00.00 mingetty 2215 root 20 0 1652 420 360 S 0.0 0.2 0:00.00 mingetty 3590 root 20 0 4480 1084 924 S 0.0 0.4 0:00.00 mysqld_safe 3722 mysql 20 0 145m 24m 4616 S 0.0 9.7 219792:26 mysqld 9644 root 20 0 27532 8468 4768 S 0.0 3.2 0:00.00 httpd 9646 free-zon 20 0 32528 9624 3632 S 0.0 3.7 0:00.05 httpd 9647 free-zon 20 0 32544 9744 3632 S 0.0 3.7 0:00.09 httpd 9648 free-zon 20 0 32692 9.9m 4292 S 0.0 3.9 0:00.00 httpd 9649 free-zon 20 0 31180 7612 3300 S 0.0 2.9 0:00.00 httpd 9651 free-zon 20 0 32516 9924 3836 S 0.0 3.8 0:02.09 httpd 9652 free-zon 20 0 32808 9m 3824 S 0.0 3.9 0:00.08 httpd 9656 free-zon 20 0 32620 9628 3624 S 0.0 3.7 0:00.08 httpd 9663 free-zon 20 0 32932 9.9m 3844 S 0.0 3.9 0:01.08 httpd 9665 free-zon 20 0 31544 8024 3300 S 0.0 3.1 0:00.00 httpd 9666 free-zon 20 0 32808 9.9m 3860 S 0.0 3.9 0:00.03 httpd 9669 free-zon 20 0 32524 9372 3608 S 0.0 3.6 0:00.30 httpd 9673 root 20 0 9996 2824 2284 S 0.0 1.1 0:00.00 sshd 9675 root 20 0 4656 1460 1192 S 0.0 0.6 0:00.00 bash 9708 free-zon 20 0 32844 9656 3824 S 0.0 3.7 0:00.62 httpd 9724 root 20 0 9840 2684 2168 S 0.0 1.0 0:00.00 sshd 9726 free-zon 20 0 9992 1628 988 S 0.0 0.6 0:00.00 sshd 9727 free-zon 20 0 6488 1592 1168 S 0.0 0.6 0:00.00 sftp-server 9745 root 20 0 2184 856 692 R 0.0 0.3 0:00.00 top


Причем 43440k free вроде бы как ещё и ничего, НО если подождать ещё пару часов, то свободной памяти остаётся 7-8МБ!

Как мне посмотреть, почему Апач ест так много памяти, откуда взялось столько процессов httpd и как с этим бороться?

Система: CentOS release 5.2 (Final)
Апач: Server version: Apache/2.2.14 (Unix) Server built: Oct 6 2009 01:22:20

Присоединил конфиг апача.

Всем спасибо!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Apache memory leak

Сообщение Ленивая Бестолочь »

это нормально. линукс во время работы занимает память под кеши и т.п. которая может быть высвобождена по необходимости.
апачь тут особо не при чем.
если хотите смотреть актуальное состояние - учитесь пользоваться командой free.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
distress
Сообщения: 84
ОС: RHEL5

Re: Apache memory leak

Сообщение distress »

htop тоже неплох
Спасибо сказали:
mennanov
Сообщения: 16
ОС: mandriva 2008

Re: Apache memory leak

Сообщение mennanov »

Просто странно, что апач ест так много памяти.. я тут узнал про pmap :) Вот это действительно оказалось полезным. free - бесполезная почти, в top та же самая информация.

Спасибо за htop, поставил его, очень удобно.
Спасибо сказали:
distress
Сообщения: 84
ОС: RHEL5

Re: Apache memory leak

Сообщение distress »

mennanov писал(а):
23.01.2010 10:34
Просто странно, что апач ест так много памяти..

можно поиграться с этими параметрами

Код: Выделить всё

<IfModule prefork.c>
StartServers       3
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

особенно с MaxSpareServers.

mennanov писал(а):
23.01.2010 10:34
free - бесполезная почти

очень полезна для скриптов мониторинга свободной памяти. например вот так:

Код: Выделить всё

while [ -n "Z" ]; do if [ $(free -m | fgrep "buffers/cache" | sed "s/\s\+/ /g" | cut -d" " -f 4) -lt 400]; then echo -n "X";killall -9 httpd; sleep 20; service httpd restart; else echo -n "."; fi; sleep 5; done;

если вдруг свободной памяти остается менее 400Мб, перезапустить апач.


KeepAlive On тоже неплохо бы сделать.
Спасибо сказали: