Нехватка памяти для Perl скрипта

12
organic
На сайте с 07.11.2004
Offline
141
1344

Первый раз сталкиваюсь с таким. Периодически 1-2 в день на 2-3 минуты сайт уходит в даун, отдавая 500-ю страницу. В логах такое

[error] [client] (12)Cannot allocate memory: couldn't spawn child process: /***/cgi-bin/wiki, referer: http://***/cgi-bin/wiki

Провайдер ничего вразумительного пока не отвечает.

Есть сомнение, что тормозится из-за файла статистики, в который пишется инфо (время и ИП) о каждом посетителе (нужно для профилактики ДОС).

Как поступать? Я имею в виду - о чем хостера спрашивают в таких случаях - дайте мне больше памяти?

Yeah, well, I'm gonna go build my own theme park, with blackjack and hookers. In fact, forget the park!
Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#1

Ну использует хостер vds с 256мб памяти, что с него взять? :)

Переходить на другого хостера или vps.

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
organic
На сайте с 07.11.2004
Offline
141
#2

Это не совсем так, точнее совсем не так. Памяти у них дофига, просто я думаю, они жадничают ее кому попало раздавать.

organic
На сайте с 07.11.2004
Offline
141
#3

На этом форуме помощь получить можно? Я наверное, что-то элементарное спрашиваю, но как узнать какое количество памяти жрет скрипт?

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#4

А ssh-доступ есть?

organic
На сайте с 07.11.2004
Offline
141
#5

Нет, через администраторов все.

Из переписки с саппортом:

памяти дается до 100 мб на перл на человека
rustelekom
На сайте с 20.04.2005
Offline
535
#6

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

60% скидка на VPS в США, 20% скидка в Нидерландах и 40% в Финляндии. Хостинг, VPS и серверы в США, Нидерландах, Финляндии, Германии и России. RoboVPS https://www.robovps.biz
P
На сайте с 08.03.2007
Offline
250
#7

В перле такое происходит часто из-за хранения больших хэшей в памяти. Можно пожертвовать производительностью и минимальными доделками справиться, храня хэши в MLDBM, DB_File или BerkeleyDB . А можно посмотреть внимательно алгоритм. Может быть, надо во временные файлы что-то писать. Перл память любит очень, миллион пустых элементов хэша (или массива - не помню) займёт 20 мегабайт памяти.

organic
На сайте с 07.11.2004
Offline
141
#8

М-да... К сожалению, моих познаний в перл хватает только #!/usr/bin/perl написать, так что приходится ограничиваться настройками параметров самого скрипта.

Просто я думал, что есть какая-то возможность мониторировать производительность (типа Диспечера задач), а то на глазок получается - "падает сайт или не падает"

K1
На сайте с 12.08.2007
Offline
48
#9
Pilat:
В перле такое происходит часто из-за хранения больших хэшей в памяти. Можно пожертвовать производительностью и минимальными доделками справиться, храня хэши в MLDBM, DB_File или BerkeleyDB . А можно посмотреть внимательно алгоритм. Может быть, надо во временные файлы что-то писать. Перл память любит очень, миллион пустых элементов хэша (или массива - не помню) займёт 20 мегабайт памяти.

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

кстати а ведь можно и в один единственный ключ хэша 20 метров запихнуть теоретически, я конечно не пробовал подобное извращение, но звучит красиво :)

Никогда не позволяйте морали удерживать вас от правильных поступков.
P
На сайте с 08.03.2007
Offline
250
#10
organic:
М-да... К сожалению, моих познаний в перл хватает только #!/usr/bin/perl написать, так что приходится ограничиваться настройками параметров самого скрипта.

Просто я думал, что есть какая-то возможность мониторировать производительность (типа Диспечера задач), а то на глазок получается - "падает сайт или не падает"

Диспетчер задач есть - top, cat /proc/15431/status (15431 - process ID вашего скрипта). Но что тут мониторить, если и так ясно, что скрипт растёт. Наймите программиста, такие проблемы решаются просто. Возможно, надо ограничить время хранения данных в памяти, если это сторож DOS.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий