in reply to Re: Parallel::ForkManager, DBI using memory in thread Parallel::ForkManager, DBI using memory
Thanks for answer BioSysadmin,
I read some documentation about this, and yes - every child process needs own db handler. Next - ofcourse, I tried commenting out DBI stuff, it works good, so it is bug in DBI, some memory leak, or what ? I don't believe that.
And thats not point, if I run 5 processes at once, or 50, or just 2. Always, when my thread ends it takes some memory, so at the finish of script perl process will consume equal memory. I hope someone will give me answer to this interesting question.
Brano
Re^3: Parallel::ForkManager, DBI using memory
by biosysadmin (Deacon) on Nov 08, 2004 at 15:32 UTC
|
Interesting. Another thing you might try is manually undef'ing your database handles at the end of your loop, like this:
foreach my $x (0..$#links) {
$pm->start and next;
my $dbh = DBI->connect("DBI:mysql:database=customers;host=loca
+lhost;port=3306", "root", "")
or die "Can't connect: ", $DBI::errstr;
$dbh->{RaiseError} = 1;
print "$links[$x]\n";
# do something (read, update, insert from db)
$dbh->disconnect;
undef($dbh);
$pm->finish;
}
Best of luck. :) | [reply] [d/l] |
|
Hi biosys!
thanks for next suggestion, I tryied that, unfortunately it doesn't help, also you have one little error in your posted script, undef($dbh) should be before $pm->finish. Any more ideas ? :)
I really don't know how to solve this, I have around 15.000+ iterations, so I will always run out of memory by using this :(
-- Brano
| [reply] |
|