Discussion:
Not enough space: couldn't spawn child process:
(слишком старое сообщение для ответа)
Victor Sudakov
2010-11-13 09:28:26 UTC
Permalink
Dear All,

В логе апача стали появляться сообщения

[Sat Nov 13 08:32:27 2010] [error] [client 10.14.135.25] (12)Not enough space:
couldn't spawn child process: /export/home/XXXXXXXXXXX/cgi-bin/cgi-rpc
Перезапуск апача помог.

Нагуглил http://archive.apache.org/gnats/3602
Что, это правда так и на Солярке ничего сделать нельзя? Только httpd
периодически перезапускать остаётся?

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
Andrey N. Oktyabrski
2010-11-13 10:27:43 UTC
Permalink
Post by Victor Sudakov
couldn't spawn child process: /export/home/XXXXXXXXXXX/cgi-bin/cgi-rpc
Перезапуск апача помог.
Hагуглил http://archive.apache.org/gnats/3602
Что, это правда так и на Солярке ничего сделать нельзя? Только httpd
периодически перезапускать остаётся?
Там гонево какое-то...
У меня апач прекрасно работал. Hо без cgi. Правда, памяти было много :-)
Andrey Ostanovsky
2010-11-16 12:26:22 UTC
Permalink
Hello Andrey!
Post by Victor Sudakov
Что, это правда так и на Солярке ничего сделать нельзя? Только httpd
периодически перезапускать остаётся?
AO> Там гонево какое-то...
AO> У меня апач прекрасно работал. Hо без cgi. Правда, памяти было много

Зависит от написания кода - можно и с cgi, или с принудительно убиваемыми через
1000 запросов чилдами память терять.

Andrey
Victor Sudakov
2010-11-17 05:34:06 UTC
Permalink
Post by Andrey Ostanovsky
Post by Victor Sudakov
Что, это правда так и на Солярке ничего сделать нельзя? Только httpd
периодически перезапускать остаётся?
AO> Там гонево какое-то...
AO> У меня апач прекрасно работал. Hо без cgi. Правда, памяти было много
Зависит от написания кода - можно и с cgi, или с принудительно
убиваемыми через 1000 запросов чилдами память терять.
Вопрос в том, как выяснить, точно ли httpd теряет память.
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
2:5005/***@fidonet http://vas.tomsk.ru/
Serguei Revtov
2010-11-17 07:39:52 UTC
Permalink
Hi Victor!
rm -rf $* <
VS> Вопрос в том, как выяснить, точно ли httpd теряет память.


А банальный топ или ps с соотв параметрами не показывает? 8-O



-- Serguei
2:5021/11.10 || 2:5021/49.1
Victor Sudakov
2010-11-17 11:06:02 UTC
Permalink
Post by Serguei Revtov
rm -rf $* <
VS> Вопрос в том, как выяснить, точно ли httpd теряет память.
А банальный топ или ps с соотв параметрами не показывает? 8-O
top в эхотаге я не очень верю, по крайней мере про swap он показывает
нечто отличное от "swap -s" или "swap -l".

Впрочем, если ты скажешь точный способ определить утечку памяти в
httpd с помощью top или ps, буду благодарен.
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
2:5005/***@fidonet http://vas.tomsk.ru/
Vova Uralsky
2010-11-17 12:14:27 UTC
Permalink
Hello Victor.
Post by Serguei Revtov
А банальный топ или ps с соотв параметрами не показывает? 8-O
VS> top в эхотаге я не очень верю, по крайней мере про swap он показывает
VS> нечто отличное от "swap -s" или "swap -l".

Было бы удивительно, если бы это было иначе...

VS> Впрочем, если ты скажешь точный способ определить утечку памяти в
VS> httpd с помощью top или ps, буду благодарен.

man ps и поискать там слово size?

Vova
Victor Sudakov
2010-11-18 05:59:47 UTC
Permalink
Post by Vova Uralsky
Post by Serguei Revtov
А банальный топ или ps с соотв параметрами не показывает? 8-O
VS> top в эхотаге я не очень верю, по крайней мере про swap он показывает
VS> нечто отличное от "swap -s" или "swap -l".
Было бы удивительно, если бы это было иначе...
Почему удивительно? Hа фре показания top совпадают с показаниями swapinfo.
Post by Vova Uralsky
VS> Впрочем, если ты скажешь точный способ определить утечку памяти в
VS> httpd с помощью top или ps, буду благодарен.
man ps и поискать там слово size?
Hет, кэп. Как вычислить утечку, имея size и другие данные ps (или не
ps)?
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
2:5005/***@fidonet http://vas.tomsk.ru/
Vova Uralsky
2010-11-19 05:09:57 UTC
Permalink
Hi!
Post by Vova Uralsky
Post by Serguei Revtov
А банальный топ или ps с соотв параметрами не показывает? 8-O
VS>>> top в эхотаге я не очень верю, по крайней мере про swap он показывает
VS>>> нечто отличное от "swap -s" или "swap -l".
Post by Vova Uralsky
Было бы удивительно, если бы это было иначе...
VS> Почему удивительно? Hа фре показания top совпадают с показаниями swapinfo.

Если не вдаваться в подробности,
http://docs.sun.com/app/docs/doc/817-5093/fsswap-29713?l=en&a=view а вообще,
ключевое слово, virtual swap space... Во фре такого нет.

VS>>> Впрочем, если ты скажешь точный способ определить утечку памяти в
VS>>> httpd с помощью top или ps, буду благодарен.
Post by Vova Uralsky
man ps и поискать там слово size?
VS> Hет, кэп. Как вычислить утечку, имея size и другие данные ps (или не
VS> ps)?

Вычислить приращение?

Vova
Victor Sudakov
2010-11-25 08:54:51 UTC
Permalink
Post by Vova Uralsky
Post by Victor Sudakov
Почему удивительно? Hа фре показания top совпадают с показаниями swapinfo.
Если не вдаваться в подробности,
http://docs.sun.com/app/docs/doc/817-5093/fsswap-29713?l=en&a=view а вообще,
ключевое слово, virtual swap space... Во фре такого нет.
Это из-за virtual swap space наблюдается такой разнобой в показаниях?

$ prtconf | grep -i memo
Memory size: 8190 Megabytes
$ swap -l
swapfile dev swaplo blocks free
/dev/dsk/c3t0d0s1 31,129 8 8401984 8401984
$ swap -s
total: 4413556k bytes allocated + 981044k reserved = 5394600k used, 2466316k available
$

Из 5394600k+2466316k никак не складываются ни 4 гига, ни 12.
Post by Vova Uralsky
VS>>> Впрочем, если ты скажешь точный способ определить утечку памяти в
VS>>> httpd с помощью top или ps, буду благодарен.
Post by Victor Sudakov
Post by Vova Uralsky
man ps и поискать там слово size?
VS> Hет, кэп. Как вычислить утечку, имея size и другие данные ps (или не
VS> ps)?
Вычислить приращение?
То есть мониторинг во времени и вычисления? Я-то подумал, что можно
какой-то командой сразу посмотреть.
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
2:5005/***@fidonet http://vas.tomsk.ru/
Dmitry Miloserdov
2010-11-25 19:20:50 UTC
Permalink
Post by Victor Sudakov
Из 5394600k+2466316k никак не складываются ни 4 гига, ни 12.
Есть еще неперемещаемая память. Ядро + mlocked + shared(частично).
Если zfs используешь то скорее всего ядро. До появления zfs эта сумма
была практически постоянной на протяжении жизни системы.

echo ::memstat | pfexec mdb -k
Если кто знает более правильный метод получения этой информации скажите.

С вытаскиванием данных zfs из ядра было довольно много
заявок, но осол умер раньше.
Кстати кто-нибудь уже смотрел на опениндиану? Использовать можно?
Andrey N. Oktyabrski
2010-11-26 06:39:19 UTC
Permalink
Post by Dmitry Miloserdov
Кстати кто-нибудь уже смотрел на опениндиану? Использовать можно?
У меня под ней перестал работать bcmndis, поэтому дальнейший просмотр
отложен. Первое впечатление - работает сильно быстрее opensolaris'a.
Обновилась, кстати, совершенно без проблем. У меня. Hо вот один человек
рассказал страшную историю - не может обновить.
Vova Uralsky
2010-11-25 18:04:48 UTC
Permalink
Hello Victor.
Post by Vova Uralsky
Если не вдаваться в подробности,
http://docs.sun.com/app/docs/doc/817-5093/fsswap-29713?l=en&a=view а
вообще, ключевое слово, virtual swap space... Во фре такого нет.
VS> Это из-за virtual swap space наблюдается такой разнобой в показаниях?
VS> $ prtconf | grep -i memo
VS> Memory size: 8190 Megabytes
VS> $ swap -l
VS> swapfile dev swaplo blocks free
VS> /dev/dsk/c3t0d0s1 31,129 8 8401984 8401984
VS> $ swap -s
VS> total: 4413556k bytes allocated + 981044k reserved = 5394600k used,
VS> 2466316k available $
VS> Из 5394600k+2466316k никак не складываются ни 4 гига, ни 12.

Где написано что должно?
Post by Vova Uralsky
VS>>> Впрочем, если ты скажешь точный способ определить утечку
памяти в
VS>>> httpd с помощью top или ps, буду благодарен.
Post by Vova Uralsky
man ps и поискать там слово size?
VS> Hет, кэп. Как вычислить утечку, имея size и другие данные ps
(или не
VS> ps)?
Вычислить приращение?
VS> То есть мониторинг во времени и вычисления? Я-то подумал, что можно
VS> какой-то командой сразу посмотреть.

Если ты придумаешь что посмотреть, я попробую найти тебе соответствующую
команду.

Vova
Victor Sudakov
2010-12-02 08:38:46 UTC
Permalink
Dear Vova,
Post by Vova Uralsky
Если не вдаваться в подробности,
http://docs.sun.com/app/docs/doc/817-5093/fsswap-29713?l=en&a=view
а вообще, ключевое слово, virtual swap space... Во фре такого нет.
VS>> Это из-за virtual swap space наблюдается такой разнобой в
VS>> показаниях? $ prtconf | grep -i memo Memory size: 8190 Megabytes
VS>> $ swap -l swapfile dev swaplo blocks free
VS>> /dev/dsk/c3t0d0s1 31,129 8 8401984 8401984 $ swap -s
VS>> total: 4413556k bytes allocated + 981044k reserved = 5394600k
VS>> used, 2466316k available $ Из 5394600k+2466316k никак не
VS>> складываются ни 4 гига, ни 12.

VU> Где написано что должно?

Ну какой-то физический смысл должен же быть у получившейся величины.

VS>>> Впрочем, если ты скажешь точный способ определить утечку памяти httpd
VS>>> с помощью top или ps, буду благодарен.
Post by Vova Uralsky
Post by Vova Uralsky
man ps и поискать там слово size?
[dd]
Post by Vova Uralsky
Вычислить приращение?
VS>> То есть мониторинг во времени и вычисления? Я-то подумал, что
VS>> можно какой-то командой сразу посмотреть.

VU> Если ты придумаешь что посмотреть, я попробую найти тебе
VU> соответствующую команду.

Э нет, это если ты придумаешь что посмотреть, команду я и сам найду.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
Vova Uralsky
2010-12-02 16:26:58 UTC
Permalink
Hello Victor.
w а вообще, ключевое слово, virtual swap space... Во фре такого
VS>>> Это из-за virtual swap space наблюдается такой разнобой в
VS>>> складываются ни 4 гига, ни 12.
VU>> Где написано что должно?
VS> Ну какой-то физический смысл должен же быть у получившейся величины.

У виртуальной величины физический смысл? Даааа.... Диалектика....

VS>>>> Впрочем, если ты скажешь точный способ определить утечку памяти
VS>>>> httpd с помощью top или ps, буду благодарен.
Post by Vova Uralsky
man ps и поискать там слово size?
Вычислить приращение?
VS>>> То есть мониторинг во времени и вычисления? Я-то подумал, что
VS>>> можно какой-то командой сразу посмотреть.
VU>> Если ты придумаешь что посмотреть, я попробую найти тебе
VU>> соответствующую команду.
VS> Э нет, это если ты придумаешь что посмотреть, команду я и сам найду.

Не, так не пойдёт, я уже придумывал что смотреть и сказал как. Тебе не
понравилось, теперь твоя очередь думать, если что, помогу с командой.

Vova
Victor Sudakov
2010-12-06 09:13:58 UTC
Permalink
Dear Vova,

02 Dec 10 19:26, you wrote to me:


[dd]

VS>>>> То есть мониторинг во времени и вычисления? Я-то подумал, что
VS>>>> можно какой-то командой сразу посмотреть.
VU>>> Если ты придумаешь что посмотреть, я попробую найти тебе
VU>>> соответствующую команду.
VS>> Э нет, это если ты придумаешь что посмотреть, команду я и сам
VS>> найду.

VU> Не, так не пойдёт, я уже придумывал что смотреть и сказал как. Тебе не
VU> понравилось, теперь твоя очередь думать, если что, помогу с командой.

Мне не понравилось, что нельзя посмотреть синхронически, где память течет. На
диахроническое исследование не всегда есть время.

Помоги pls с командой, как посмотреть, что именно в свопе лежит. В смысле,
память каких именно процессов.

Victor Sudakov, VAS4-RIPE, VAS47-RIPN
Vova Uralsky
2010-12-06 19:01:34 UTC
Permalink
Hello Victor.

06 Dec 10 12:13, you wrote to me:

VS> Мне не понравилось, что нельзя посмотреть синхронически, где память
VS> течет. На диахроническое исследование не всегда есть время.

Раздели задачу на две, найди текущий процесс, а потом ковыряй. Для затравки
http://www.nbl.fi/~nbl97/solaris/dtrace/099html/Mem/swapinfo.d.html Загляни в
каталог, там много интересного, может тебе что-то лучше подойдёт.
Или http://blogs.sun.com/dlutz/entry/memory_leak_detection_with_libumem
Когда-то пользовался dbx. Может и тебе понравится.

VS> Помоги pls с командой, как посмотреть, что именно в свопе лежит. В
VS> смысле, память каких именно процессов.

возможно хватит pmap -x ? ;-) Между прочим, не факт что в своп попадёт именно
то что пухнет.

Vova

Serguei Revtov
2010-11-18 06:04:12 UTC
Permalink
Hi Victor!
Post by Serguei Revtov
rm -rf $* <
VS> Вопрос в том, как выяснить, точно ли httpd теряет память.
А банальный топ или ps с соотв параметрами не показывает? 8-O
VS> top в эхотаге я не очень верю, по крайней мере про swap он показывает
VS> нечто отличное от "swap -s" или "swap -l".

VS> Впрочем, если ты скажешь точный способ определить утечку памяти в
VS> httpd с помощью top или ps, буду благодарен.

Если у тебя дело доходит до забивания кем-то всей памяти, то достаточно точно
она утекает в тот процесс, который в top или ps показывается как съевший всю
память. А на начальных этапах можно определить только по скорости увеличения
объема съеденной памяти.

Вот у меня явно в httpd ничего не утекает:

load averages: 0.00, 0.00, 0.00 09:04:05
53 processes: 52 sleeping, 1 on cpu
CPU states: 99.8% idle, 0.0% user, 0.2% kernel, 0.0% iowait, 0.0% swap
Memory: 1024M real, 786M free, 94M swap in use, 1209M swap free
This terminal can only display 41 processes.
PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND
...
17279 webadmin 1 59 0 7712K 2096K sleep 0:00 0.00% httpd
17151 webadmin 1 59 0 7712K 2092K sleep 0:00 0.00% httpd
17156 webadmin 1 59 0 7712K 2052K sleep 0:00 0.00% httpd
19406 webadmin 1 59 0 7712K 2048K sleep 0:00 0.00% httpd
17166 webadmin 1 59 0 7712K 2048K sleep 0:00 0.00% httpd
17175 webadmin 1 59 0 7712K 2048K sleep 0:00 0.00% httpd
17161 webadmin 1 59 0 7712K 2044K sleep 0:00 0.00% httpd

А свежего сквида не ставлю потому как он жрет чрезмерно, что увидел тем же
топом.


-- Serguei
2:5021/11.10 || 2:5021/49.1
Andrey Ostanovsky
2010-11-17 10:17:48 UTC
Permalink
Hello Victor!
Post by Andrey Ostanovsky
Post by Victor Sudakov
Что, это правда так и на Солярке ничего сделать нельзя? Только
httpd периодически перезапускать остаётся?
AO> Там гонево какое-то...
AO> У меня апач прекрасно работал. Hо без cgi. Правда, памяти было
много
Зависит от написания кода - можно и с cgi, или с принудительно
убиваемыми через 1000 запросов чилдами память терять.
VS> Вопрос в том, как выяснить, точно ли httpd теряет память.

Вариант с принудительным убиением чилдов - под солярисом не работает? :)

Andrey
Victor Sudakov
2010-11-17 11:10:03 UTC
Permalink
Post by Serguei Revtov
Post by Andrey Ostanovsky
Post by Victor Sudakov
Что, это правда так и на Солярке ничего сделать нельзя? Только
httpd периодически перезапускать остаётся?
AO> Там гонево какое-то...
AO> У меня апач прекрасно работал. Hо без cgi. Правда, памяти было много
Зависит от написания кода - можно и с cgi, или с принудительно
убиваемыми через 1000 запросов чилдами память терять.
VS> Вопрос в том, как выяснить, точно ли httpd теряет память.
Вариант с принудительным убиением чилдов - под солярисом не работает? :)
В смысле поставить MaxRequestsPerChild отличный от нуля? Спасибо,
попробую.

Тем более что в http.conf интересный комментарий имеется (Солярис недобрым
словом упомянут).

# MaxRequestsPerChild: the number of requests each child process is
# allowed to process before the child dies. The child will exit so
# as to avoid problems after prolonged use when Apache (and maybe the
# libraries it uses) leak memory or other resources. On most systems, this
# isn't really needed, but a few (such as Solaris) do have notable leaks
# in the libraries. For these platforms, set to something like 10000
# or so; a setting of 0 means unlimited.
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
2:5005/***@fidonet http://vas.tomsk.ru/
Dmitry Miloserdov
2010-11-13 10:27:44 UTC
Permalink
Post by Victor Sudakov
В логе апача стали появляться сообщения
couldn't spawn child process: /export/home/XXXXXXXXXXX/cgi-bin/cgi-rpc
Перезапуск апача помог.
Hагуглил http://archive.apache.org/gnats/3602
Что, это правда так и на Солярке ничего сделать нельзя? Только httpd
периодически перезапускать остаётся?
Странная переписка.
У человека течет память в апаче но утекшая память
не используется. Вместо того чтобы искать проблему
предлагают сменить ОС на ту в которой неиспользованная
(на текущий момент) память считается свободной.


Если процесс выделяет себе память (malloc,brk,mmap)
то в солярисе память действительно выделяется - на
это количество уменьшается alvailable. Будет ли эта
память исползоваться или нет системе не известно
- ее просят выделить она выделяет. Более того в
солярисе вызов malloc может вернуть NULL если памяти
не хватит. Это позволяет гарантировать что процессы
получившие память могут ей распоряжаться по усмотрению
- например начать использовать через неделю и не
быть убиты OOM-килером.

Что можно сделать:
Для начала стоит убедится что проблема это апач -
перезапустив практически любой процесс ты освободишь
часть памяти - а настоящая проблема может быть в
каком-нибудь большом файле валяющемся в /tmp.

У тебя кончилась виртуальная память - нужно либо
добавить ее (увеличить swap) либо не допустить ее
исчерпания.

Если это все таки апач и если он не прекращает роста со
временем то это утечка и если нет возможности/желания
разбираться с ним то можно его ограничить (к примеру
psctl в стартап скрипт добавить).
Если же он съедает сколько-то памяти и дальше не растет
то лучше добавить свопа.
Victor Sudakov
2010-11-16 03:47:33 UTC
Permalink
Dmitry Miloserdov wrote:

Спасибо за пояснения.
Post by Dmitry Miloserdov
Для начала стоит убедится что проблема это апач -
перезапустив практически любой процесс ты освободишь
часть памяти - а настоящая проблема может быть в
каком-нибудь большом файле валяющемся в /tmp.
А как убедиться, что растет именно апач?

По моему разумению, CGI не должны вызывать утечку памяти, ибо cgi
процесс выполнился и завершился.
Post by Dmitry Miloserdov
У тебя кончилась виртуальная память - нужно либо
добавить ее (увеличить swap) либо не допустить ее
исчерпания.
Если это все таки апач и если он не прекращает роста со
временем то это утечка и если нет возможности/желания
разбираться с ним то можно его ограничить (к примеру
psctl в стартап скрипт добавить).
Если же он съедает сколько-то памяти и дальше не растет
то лучше добавить свопа.
У меня сейчас (после перезапуска апача):
total: 231416k bytes allocated + 21728k reserved = 253144k used, 2621640k available
--
Victor Sudakov, VAS4-RIPE, VAS47-RIPN
2:5005/***@fidonet http://vas.tomsk.ru/
Loading...