use strict;use warnings;my $app = sub { my $mem = `ps -o RSS= -p $$`; $mem =~ s/^\s*|\s*$//gs; return [ 200,[ 'Content-Type' => 'text/text' ],[ $mem ]];};
我被要求上述1000次并增加了内存使用量.根据启动服务器的方式,得到:
> plackup – 内存使用率在前3个请求中提高,并在接下来的997个请求中保持不变
> plackup -r – 内存使用量随机增加(不是每次请求)4k.
> starman – 如上所述,内存使用量随机增加4k,但速度较慢
问题是:
>为什么提高内存使用率?泄漏在哪里,以及如何实现恒定的内存使用(特别是在starman上),因为我不想长期耗尽内存. (好的,可以定义例如–max-requests 100),但它不是内存使用的答案.
>或 – 我的例子有什么问题?
如果有人想测试这个 – 这是我的获取脚本:
use strict;use warnings;use LWP::UserAgent;my $ua = LWP::UserAgent->new;my $req = http::Request->new(GET => 'http://localhost:5000');my $old_mem = 0;print "req#\tmem\n";foreach my $i (1..1000) { my $res = $ua->request($req); (my $mem = $res->content) =~ s/\D//g; next if( $mem == $old_mem ); print "$i\t$mem\n"; $old_mem = $mem;}
我的结果:
plackup plackup -r starmanreq# mem req# mem req# mem1 7780 1 3924 1 32802 7800 2 4296 5 37283 7804 3 4304 8 3280 ... ... ... deleted ... deleted ... ... 839 4596 994 3912 866 4600 998 3908 962 4604 1000 3912
所以,
>为什么在前3个请求中提升?
> plackup -r – 增加4k(见最后几行) – 开头还有更多
> starman – 提升,但默认5名工人的速度较慢(3280-> 3912)
版本:
# cpanm Plack starmanPlack is up to date. (0.9979)starman is up to date. (0.2010)# perl -vThis is perl 5,version 12,subversion 3 (v5.12.3) built for darwin-thread-multi-2level解决方法 根据 miyagava的评论,答案是:
“plackup – memory usage is raising at
first 3 requests and remain constant
for the next 997 requests” That means
some modules are lazy-loaded in the
first few requests. After that there’s
no leak. – miyagawa 14 hours agostarman by default enables keep-alive
and http pipelining,meaning if you
send 1000 requests in the short period
of time you’ll have these connections
connected,unless you explicitly
disconnect them. I can confirm this
using ApacheBench – the memory
temporarily increases,but when they
disconnect/timeout,the memory gets
down to where it was. – miyagawa 14
hours ago
感谢名单.
总结以上是内存溢出为你收集整理的perl – 为什么要提高plackup(或starman)的内存使用率?全部内容,希望文章能够帮你解决perl – 为什么要提高plackup(或starman)的内存使用率?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)