Как минимизировать выделение памяти скрипту mod_perl? - PullRequest
0 голосов
/ 10 октября 2009

Я создал простой Perl-скрипт. Единственное, что он делает, это ждет 5 секунд.

Когда я запускаю скрипт на сервере через mod_perl, это занимает много памяти. Экземпляр занимает 36 мегабайт.

Почему так много памяти выделяется? Как я могу минимизировать память, взятую из системы запущенным скриптом?

Это вывод утилиты top при запуске 2 скриптов.

 5162 www-data  25   0 36732 8124 2868 S  1.3  3.1   0:00.05 apache2
 5161 www-data  25   0 36732 8124 2868 S  0.7  3.1   0:00.04 apache2

Сценарий.

#!/usr/bin/perl
use CGI;

my $query= new CGI;
my $content = "5 second delay...\n";

$query->header(
    '-Content-type' => "text/plain",
    '-Content-Length' => length($content)
);

print $content;

sleep(5);

1 Ответ

0 голосов
/ 11 октября 2009

Нет, это не занимает 36 мегабайт.

Это количество адресного пространства, выделенного в процессе. Он включает в себя пространство, отображаемое из исполняемых файлов, mmap () 'd из файлов, а также пространство, которое совместно используется другими процессами.

Подавляющее большинство из них будет использоваться другими процессами (особенно другими рабочими процессами Apache).

Чтобы узнать, сколько памяти на самом деле он использует, включите в работу профилировщик памяти Perl.

...