0

簡単な perl スクリプトを作成しました。それが行う唯一のことは、5 秒間待機することです。

mod_perl を使用してサーバー上でスクリプトを生成すると、大量のメモリが必要になります。インスタンスには 36 メガバイトが必要です。

大量のメモリが割り当てられているのはなぜですか? 実行中のスクリプトによってシステムから使用されるメモリを最小限に抑えるにはどうすればよいですか?

これは、2 つのスクリプトを実行したときの「top」ユーティリティの出力です。

 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);
4

1 に答える 1

0

いいえ、36 メガバイトは必要ありません。

これは、プロセスで割り当てられたアドレス空間の量です。これには、実行可能ファイルからマップされたスペース、ファイルから mmap() されたスペース、および他のプロセスと共有される非常に重要なスペースが含まれます。

その大部分は、他のプロセス (特に他の Apache ワーカー プロセス) と共有されます。

実際にどれだけのメモリを使用しているかを調べるには、Perl メモリ プロファイラーを仕事に取り入れてください。

于 2009-10-10T21:19:08.450 に答える