Я использую мод Perl 1.3.0 с Apache 1.3.41 Perl версии 5.8.6, и объем памяти, кажется, увеличивается примерно на 4 КБ каждый 3-й или 4-й запрос. Perl-скрипт, который мы запускаем, просто:
print "Content-type: text/html\n\n"; print "baby";
Тем не менее, этот процесс Apache только растет и растет, когда мы запускаем его с помощью Apache. Мы ударяем это с:
ab -n 100000 -c 1 http://localhost/search/search.cgi &> /dev/null
и мы наблюдаем, как размер процесса увеличивается примерно с 4 мегабайт до 24 после примерно 20000 запросов.
Чтобы ответить на вопрос ниже:
Мы делаем это на Redhat Enterprise 4.7.
Это было выделено как это, потому что мы попали в статический файл, или прямой запрос cgi, и память не растет. Когда мы используем PerlHandler Apache :: Registry или PerlRun или просто указываем PerlHandler на какой-то код, который является обработчиком, тогда все они просочились.
Кто-нибудь видел что-нибудь подобное или знает, что происходит?
EDIT:
Спасибо за ответы, ребята. Я использовал Devel :: Cycle и обнаружил утечку, но проблема здесь в том, что мы сократили наш код до печати заголовка и оператора. В Perl нет функции печати (я надеюсь ....). Я прочитал раздел об утечке памяти в Practical Modperl, но он имеет дело с проблемами кодирования, и опять же, если нет проблемы с функцией печати Perl, это не код.