Perl Out of memory!

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-04 14:58:32

Доброго времени суток!
Суть проблемы: Запускаю скрипт который обрабатывает кучу бинарных файлов со статистикой. Скрипт как и положено ему - запускается и начинает активно хавать память. Когда заканчивается оперативка пишет Out of memory! И начинает хавать своп. И все бы хорошо но вот когда общий обем памяти (физическая + своп) достигает ~800 Мб скрипт тихо умирает без матов. Почитал гуглю на эту тему. Выяснил что есть в ядре хитрые цифири которые определяют максимальный размер ресурсов. Точнее вот тут: http://hyperrate.com/topic-view-thread.php?tid=2719 Дык вот. как рассчитать вот эти самые : kern.maxbcache, kern.maxtsiz, kern.dfldsiz, kern.maxdsiz, kern.dflssiz, kern.maxssiz and kern.sgrowsiz. так чтобы не пришлось потом к машине ехать ? На машине 512 мб рамы и 1.5 Гб своп. Заранее благодарен за ответы.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение zingel » 2008-09-04 15:36:05

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

ulimit -c 10000
Z301171463546 - можно пожертвовать мне денег

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-04 20:58:48

Не помогло. И я что то не понимаю при чем тут количество одновременно открытых файлов и то что процесс превышает лимит по памяти ?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение ProFTP » 2008-09-04 21:12:15

покажите то чт овы делаете?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение zingel » 2008-09-04 21:33:30

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

systcl -a | gremp kern | grep max
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Perl Out of memory!

Непрочитанное сообщение hizel » 2008-09-04 21:38:18

рассмотреть вариант изменения алгоритма работы программы?
всетаки скриптовой язык, проще изменить :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Perl Out of memory!

Непрочитанное сообщение zg » 2008-09-05 6:03:46

iye писал(а):со статистикой. Скрипт как и положено ему - запускается и начинает активно хавать память.
странный скрипт.... у меня для обработки гигового лога (привязки типа трафика и договора к ip-получателю) требуется несколько (!) килобайт, а сама обработка занимает несколько секунд. При этом неважно какого размера будет лог. Всё реализовано на С.

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-05 7:03:27

1) Скрипт писан не мной и он очень сложен, в котором встречаются бинарные вставки на С++. Поэтому переписывать все это у меня не возникает никакого желания. Да и писал все это человек, которому как кодеру я вполне доверяю.
2)
zingel писал(а):systcl -a | gremp kern | grep max

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

kern.maxvnodes: 35524
kern.maxproc: 4020
kern.maxfiles: 8040
kern.argmax: 65536
kern.maxfilesperproc: 7236
kern.maxprocperuid: 3618
kern.ipc.maxsockbuf: 262144
kern.ipc.somaxconn: 128
kern.ipc.max_linkhdr: 16
kern.ipc.max_protohdr: 40
kern.ipc.max_hdr: 56
kern.ipc.max_datalen: 156
kern.ipc.msgmax: 16384
kern.ipc.shmmax: 33554432
kern.ipc.mcl_pool_max: 0
kern.ipc.maxsockets: 8040
kern.kq_calloutmax: 4096
kern.maxusers: 250

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение Alex Keda » 2008-09-05 8:38:20

я бы рекомендвал увеличить количество рамы на машине.
или переписать скрипт.
==========
300 мегов свопа на машине с 512 рамы - это не работа.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение ProFTP » 2008-09-05 8:39:05

просто так не может быть ничего :evil: :evil:
Последний раз редактировалось ProFTP 2008-09-05 8:40:33, всего редактировалось 1 раз.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Perl Out of memory!

Непрочитанное сообщение hizel » 2008-09-05 8:40:22

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

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение ProFTP » 2008-09-05 8:42:45

hizel писал(а):ProFTP как бэ намекает, что сделает из этого скрипта конфетку забесплатно :)
нет, хотел потелепатировать... :drinks:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-05 8:43:23

lissyara писал(а):300 мегов свопа на машине с 512 рамы - это не работа.
А где написано про 300 мегов свопа ? Своп 1.5 Гб
ProFTP писал(а):просто так не может быть ничего
угу .. не может .. вот и копаю
hizel писал(а):ProFTP как бэ намекает, что сделает из этого скрипта конфетку забесплатно
Мне гараздо интереснее разобраться где вилы )

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35462
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение Alex Keda » 2008-09-05 8:48:54

iye писал(а):
lissyara писал(а):300 мегов свопа на машине с 512 рамы - это не работа.
А где написано про 300 мегов свопа ? Своп 1.5 Гб
между строк.
процесс умирает на 800 мегах.
значит 800-500=300 мегов процесса находиться в свапе.
у меня на серверах когда две сотни мегабайт в свапе - я суетиться начинаю, при том что на сервере 4 гига рамы.
Убей их всех! Бог потом рассортирует...

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-05 9:05:36

Машина вполне себе адекватная. В рабочем режиме она хавает не более 100 Мб рамы и все себе вполне летает. А чтобы посчитать итоговые цифирки раз в месяц - можно и подождать. На ней скорость не необходима.
Блин .. где еще ограничения копнуть ... и вот что странно ... до недавнего времени когда выполнялся скрипт и начинал заполнять своп надписи Out of memory! не вылазило ... может в перле есть какие то хитрые ограничения ? Гугль мне на эту тему ничего не рассказал. В login.conf все ограничения стоят в unlimited.

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-05 9:35:33

Устану постить .. ладно пойду куплю памяти раз идей больше нет.

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Perl Out of memory!

Непрочитанное сообщение hizel » 2008-09-05 9:51:17

а идей больше и не будет
смысл увеличивать лимит памяти для процесса если он по самые гланды в свопе
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Perl Out of memory!

Непрочитанное сообщение zg » 2008-09-05 11:38:28

iye писал(а):Устану постить .. ладно пойду куплю памяти раз идей больше нет.
iye писал(а):Скрипт писан не мной и он очень сложен, в котором встречаются бинарные вставки на С++. Поэтому переписывать все это у меня не возникает никакого желания. Да и писал все это человек, которому как кодеру я вполне доверяю.
я бы так не доверял, последний раз когда я сталкивался с биллингом на перле, там вся обработка была сделана на массивах :st: идиотизм полнейший

выложи кусок скрипта, можно не весь

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Perl Out of memory!

Непрочитанное сообщение hizel » 2008-09-05 11:41:30

что то я вас не понял
я што же наезд на перл !!?
или всетаки на идиотов? :)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Perl Out of memory!

Непрочитанное сообщение zg » 2008-09-05 11:43:02

hizel писал(а):или всетаки на идиотов? :)
я когда плохо о перле говорил? :smile:

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Perl Out of memory!

Непрочитанное сообщение ProFTP » 2008-09-05 11:45:32

если на пхп поставить 8Мб в пхп.ини, то он напишет всегда, по-моиму, что памяти не хватило.

если я правильно понял, то mod_perl работает? мало информации вообще :bn:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Perl Out of memory!

Непрочитанное сообщение zg » 2008-09-05 11:53:58

ProFTP писал(а):если на пхп поставить 8Мб в пхп.ини, то он напишет всегда, по-моиму, что памяти не хватило.
у меня движок кушает в пике 2метра, на сайте постоянно загружены полтыщи разделов, ограничение стоит по-моему в 16метров, так что не надо ;-)
ProFTP писал(а):если я правильно понял, то mod_perl работает? мало информации вообще :bn:
наврядли мод_перл, там биллинг, серверная часть, как я понимаю обработка логов.

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-05 12:17:50

Вы хочите кода. Вот нате вам кусок из генерации отчета.

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

$message_text .= $owner_id." ".$owner_data::name{$owner_id}."\n";
    @ip_list = keys %$mon_total;
    $need_ip_total = $#ip_list>0;
    if ($need_ip_total) {
        $ip_total[0] = new Math::BigInt 0;
        $ip_total[1] = new Math::BigInt 0;
        $ip_total[2] = new Math::BigInt 0;
        $ip_total[3] = new Math::BigInt 0;
    }
    foreach $ip (@ip_list) {
        $message_text .= "        ".$ip.": ".$mon_total->{$ip}->[2]."\n";
        if ($need_ip_total) {
            $ip_total[0] += $mon_total->{$ip}->[0];
            $ip_total[1] += $mon_total->{$ip}->[1];
            $ip_total[2] += $mon_total->{$ip}->[2];
            $ip_total[3] += $mon_total->{$ip}->[3];
        }
    }
    $message_text .= "        Итого: ".$ip_total[2]."\n" if $need_ip_total;

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Perl Out of memory!

Непрочитанное сообщение zg » 2008-09-05 12:29:06

iye писал(а):$mon_total->{$ip}->[0];
ну и не мудрено, что памяти не хватает, ваш программер вместо того, чтобы взвалить работу с огроменными массивами на мускул, решил сделать её на перле и очень зря, перл кушает горзадо больше памяти чем мускул на тех же таблицах.

Тут нужно делать всю обработку данных на временных таблицах муси, хоть heap, хоть myisam, но никак не на перле. Можешь, конечно оперативу растить, но это путь в никуда. Делать надо на мускуле, перл юзать только как связку.

iye
ст. сержант
Сообщения: 360
Зарегистрирован: 2008-07-29 9:02:04

Re: Perl Out of memory!

Непрочитанное сообщение iye » 2008-09-05 12:34:58

Все это понятно. Но вот я одного понять не могу - если своп не полный - то почему в него до предела нельзя данные пихать а ? :st: