LINUX.ORG.RU
ФорумAdmin

Куда делась память?


0

1

Постоянно падает апач, top выдает:

Mem:   1048772k total,  1014848k used,    33924k free,   136864k buffers
Swap:  1048568k total,        0k used,  1048568k free,   744492k cached
это при том, что в момент просмотра процессы на апаче не запущены. Выходит, что-то отжирает почти всю память, и как только апач сжирает остатки, так сразу и виснет. А вот, что показывает top, сразу после перезагрузки сервера
Mem:   1048772k total,    84808k used,   963964k free,     4464k buffers
Swap:  1048568k total,        0k used,  1048568k free,    32016k cached

Как найти виновника, который отжирает почти целый гиг памяти?

744492k cached

Кеш это. Он освободится, если какой-то проге нужна будет память.

post-factum ★★★★★ ()
Ответ на: комментарий от r2d2

И что мне это даст? Я хочу понять в чем причина повисания апача. судя по top и замечанию по кешу, памяти хватает с излишком на процессы апача. В конфигах апача настроено максимальное количество процессов 5 (тут точно память не съедается), ибо фронт эндом стоит nginx.

delimer ()
Ответ на: комментарий от post-factum

у него очень годная трава, я давно заметил

2 kostik87 этим занимается ядро, а не юзер вручную, малыш

anonymous ()
Ответ на: комментарий от delimer

Это совершенно другой вопрос. И тут нужно видеть конфиг апача, знать, что да как на нём крутится и т. п.

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

Слушай, ТС спросил как освободить память, я ему ответил.

Если он этого хочет пусть делает.

К чему эти вопросы зачем.

Я не спорю, что особого смысла в этом нет, но если ему хочется видеть красивые циферки пусть смотрит.

kostik87 ★★★★★ ()
Ответ на: комментарий от delimer

Дак апач то повисает (перестаёт отвечать на запросы) или падает (вобще нету в списке процессов)?

mky ★★★★★ ()
Ответ на: комментарий от mky
user:~# ps afx
  PID TTY      STAT   TIME COMMAND
 6194 ?        Ss     0:00 /usr/sbin/apache2 -k start
 6644 ?        S      0:06  \_ /usr/sbin/apache2 -k start
 6651 ?        S      0:02  \_ /usr/sbin/apache2 -k start
 6657 ?        S      0:00  \_ /usr/sbin/apache2 -k start
 6755 ?        S      0:27  \_ /usr/sbin/apache2 -k start
 7004 ?        S      0:28  \_ /usr/sbin/apache2 -k start

как видно повисает апач

delimer ()
Ответ на: комментарий от delimer

То есть апач как бы работает. Что то есть в его логах (/var/log/apache2 в Дебиане) прежде всего в error.log ? Слушает ли он порт (netstat -t -l -n -p). Можно ли подключиться telnet'ом на тот порт, который он слушает и сделать руками http-запрос?

mky ★★★★★ ()
Ответ на: комментарий от mky

вот что в логах

[Tue Feb 07 10:16:35 2012] [notice] caught SIGTERM, shutting down
[Tue Feb 07 10:16:36 2012] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Tue Feb 07 10:16:36 2012] [warn] RSA server certificate CommonName (CN) `site.ru' does NOT match server name!?
[Tue Feb 07 10:16:36 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Tue Feb 07 10:16:36 2012] [warn] RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Tue Feb 07 10:16:36 2012] [warn] RSA server certificate CommonName (CN) `site.ru' does NOT match server name!?
[Tue Feb 07 10:16:36 2012] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze5 with Suhosin-Patch mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
[Tue Feb 07 11:12:26 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting

user:# netstat -t -l -n -p
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp       19      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      7325/apache2
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      7325/apache2
user:# telnet ##.##.##.## 8080
Trying ##.##.##.##...
Connected to ##.##.##.##.
Escape character is '^]'.
get index.php

и тишина в ответ
delimer ()
Ответ на: комментарий от delimer

В запросе нужно указывать протокол:

GET / HTTP/1.0

и два раза «Enter».

Но, ответ, похоже в «server reached MaxClients setting». Возможно, что просто скрипты на странице неправильные и не завершаются, смотрите /var/log/apache2/access.log на предмет последних пяти запросов, потом перезапустив апач попробуйте повтроить один из этих запросов с помощью telnet и посмотреть, будет ли вывод.

mky ★★★★★ ()
Ответ на: комментарий от mky

С этим разобрался «server reached MaxClients setting». Ошибку не выдает. Увеличил на впс памяти до 2 гигов. Просмотрел логи, ничего там подозрительного нету. Все запросы выполняются без проблем по нескольку раз. Что еще попробовать?

delimer ()
Ответ на: комментарий от delimer

Давайте ещё раз в чём именно проблема, а то тут уже много сообщений.

Апач присутствует в списках процессов, принимает соединение на порт 8080, но на запросы вобще ничего не отвечает (через telnet) и в логи эти запросы не пишет. Так? Или через telnet запрос проходит и ответ есть?

mky ★★★★★ ()
Ответ на: комментарий от mky

Да, именно так. Апач присутствует в списке процессов, принимает соединение, но не отвечает на запросы. Пробовал убить один из дочерних процессов апача, он тут же создает новый и начинает отвечать. Видимо что-то его циклит и рабочие процессы входят в прострацию...

delimer ()
Ответ на: комментарий от delimer

Память здесь, походу, совсем не причём, тем более что swap не начинает использоваться. Старые темы на ЛОРе практически не читаются, поэтому, ИМХО, имеет смысл создать новую тему с описанием проблемы как в вашем последнем посте, попутно уточнив там какие запросы обрабатывает Апач --- статику или динамику (скрипт), указав версию Апача. Можно посмотреть через /proc/PID/fd для дочерних процессов есть ли у них открытые сокеты к базе данных (если она используется).

Только в новой теме не надо писать про отжирание памяти, а то опять отправт на http://www.linuxatemyram.com/ :-)

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.