Страница 1 из 1

Apache съедает всю память!!!

Добавлено: 2010-10-03 16:05:47
pismenov
Приветствую! Имеется проблема

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

[root@localhost /]# top
last pid:  6640;  load averages:  0.00,  0.12,  2.12    up 0+02:54:42  14:05:29
53 processes:  1 running, 52 sleeping
CPU:  0.4% user,  0.0% nice,  0.1% system,  0.1% interrupt, 99.4% idle
Mem: 42M Active, 106M Inact, 179M Wired, 1084K Cache, 112M Buf, 1661M Free
Swap: 4043M Total, 30M Used, 4013M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
 1540 mysql      10  44    0   332M   [b]125M [/b]sigwai  1   0:08  0.00% mysqld
 1332 root1       1  46    0  9428K   724K select  1   0:07  0.00% sshd
 2115 root1       1  44    0  9428K   988K select  0   0:01  0.00% sshd
 6596 root        1  44    0   150M 11944K select  2   0:00  0.00% httpd
 1402 root        1  44    0  4564K   448K ttyin   1   0:00  0.00% bash
 6620 www         1  44    0   150M 12088K select  2   0:00  0.00% httpd
  912 root        1  44    0  6080K  1008K select  0   0:00  0.00% sendmail
 1236 root        1  44    0  9428K     0K sbwait  0   0:00  0.00% <sshd>
 2112 root        1  44    0  9428K     0K sbwait  0   0:00  0.00% <sshd>
  535 root        1  44    0  3348K   636K select  0   0:00  0.00% syslogd
 6621 www         1  44    0   [b]150M [/b]12076K accept  2   0:00  0.00% httpd
 2118 root        1  44    0  4564K  1024K wait    2   0:00  0.00% bash
 6623 www         1  44    0   [b]150M [/b]12076K accept  2   0:00  0.00% httpd
 6616 www         1  44    0   [b]150M [/b]12088K select  1   0:00  0.00% httpd
 6619 root        1  44    0  3684K  1700K CPU2    2   0:00  0.00% top
 6624 www         1  44    0   150M 12076K accept  2   0:00  0.00% httpd
Это вывод top при Allow from мой_ип для одного сайта. Если включаю Allow from all - памяти нет вообще, проц вешается. В чём может быть трабла?

Re: Apache съедает всю память!!!

Добавлено: 2010-10-03 17:33:30
Alex Keda
всё нормально на вид
что вам не нравится

Re: Apache съедает всю память!!!

Добавлено: 2010-10-03 19:29:02
pismenov
Когда доступ разрешен с одного IP всё оки, а когда включаю для всех - сайт вешается.

Re: Apache съедает всю память!!!

Добавлено: 2010-10-03 21:38:04
Нефиг_чем_заняться
pismenov писал(а): Это вывод top при Allow from мой_ип для одного сайта. Если включаю Allow from all - памяти нет вообще, проц вешается. В чём может быть трабла?
Сдается мне, что у вас в апаче подключены все какие только не наесть - модули, от того он такой и жирный. Обычно, среднестатистический апач лопает около 50 мег, но и здесь не все так прозрачно. Апач юзает память довольно таки умно, - первая копия процесса апача действительно занимает столько памяти, сколько кажет ТОП, остальные же копии(процессы) шэрают уже загруженные библиотеки, т.е. каждый следующий процесс реально лопает что то около 1/10 от основной копии, несмотря на то, что ТОП у всех показывает один и тот же размер.

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

 
Mem: 42M Active, 106M Inact, 179M Wired, 1084K Cache, 112M Buf, 1661M Free
У вас 1.6 гига свободных, плюс если добавить неактивную(которая заиспользуется при первом же требовании если не будет хватать памяти), то получиться 1.7 свободных гигабайта.
Это достаточно даже чтоб поднять средненький хостинг.
Если вы уверенны, что вешает машину именно апач(а не какой-то из модулей, ПХП например), умерьте аппетиты апача

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

# 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
Скорее всего у вас в этих параметрах что то - не то.

Не принципиально для вашего случая, но уж заодно до кучи, пока есть желание размять пальцы.
На фряхе еще есть полезная фича (обычно живет в /usr/local/etc/apache22/Includes/no-accf.conf но по умолчанию отключено), которая включается вот так:

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

<IfDefine NOHTTPACCEPT>
   AcceptFilter http httpready
   AcceptFilter https dataready
</IfDefine>
при условии, что в /boot/loader.conf добавлено:

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

accf_data_load="YES" # Wait for data accept filter :: for https
accf_http_load="YES" # Wait for full HTTP request accept filter
Смысл фичи в том, чтобы не дергать апач без надобности, ядро получает весь запрос(грубо говоря кэширует) и только потом передает запрос апачу.
Единственная осторожность при этом - не делать /usr/local/etc/rc.d/apache22 restart, только через stop/start. Это старый баг, с которым все никак не могут разобраться, кто виноват - фря или апач.
В принципе - ничего смертельного, просто при рестарте не подцепляются хттп и дата фильтры, а при старт/стоп - все ок.

Обратите еще внимание на MySQL он у вас тоже довольно жирненький. Посмотрите в разделе баз данных тему про my.cnf, я там скидывал адрес, где можно стянуть скриптик, с помощью которого оптимально настраивается Муська.