|There's more than one way to do things|
Centos 5 specific DBI memory leakby Krambambuli (Deacon)
|on Aug 14, 2008 at 06:12 UTC||Need Help??|
Krambambuli has asked for the
wisdom of the Perl Monks concerning the following question:
I'm fighting a memory leak with DBI/DBD::Oracle which I do not really know how to tackle. I tracked it down to a simple code sequence like
The problem is that the script using the code steadily grows over runtime, always in 4 byte increments; the increment happens not with each iteration, but (apparently random) after 5, 6 or 7 iterations. I also found that it's the call to $sth->execute() that causes the increase in memory footprint.
The very same code runs OK on another (White Box Enterprise Linux release 3.0) system.
On the problematic system CentOS release 5 (Final) is installed.
I've tried to upgrade DBI, DBD::Oracle and Perl to the latest versions; no improvement. I downgraded DBI, DBD::Oracle and Perl with a few version numbers - same behavior.
But when I then compiled Perl without threads - SUCCESS! - problem gone, code worked OK.
No joy however: I specifically want and need to use threads once the script stops to leak memory.
It seems clear that it is a OS-specific problem; I'm just a bit lost for now not knowing really which direction to head.
I'm pretty sure that some of the monastery veterans have fought such wars before; so what would others do in this situation ?
Many thanks in advance.
Final update: it turned out to be not at all CentOS specific, not even a Perl or thread problem, but just an Oracle bug. I was able to overcome the problem without re-installing anything on server-side Oracle after (correctly - that was rather harder than expected!) rebuilding DBD::Oracle with Oracle Instant Client 10.2.0.3 (might work with other versions as well, it's just the version I happened to use). It was gsiems's suggestion that helped me find the solution. Thanks to all those who lent a helpful hand!
Update: after further googling and looking through documentation, it seems that it is more an Oracle 9iR2 problem (which is what I use):
Same problem on Mac OS
Same problem on Linux Suse 9.0
As I won't be able to change the installed Oracle at least for some time, I guess I won't have a quick answer here.
Update 2: Seems that HP-UX 11 has seen this too. But this last link also might bring the long awaited light on the matter:
Now, as it seems that the Oracle I deal with hasn't the released patches installed, it looks like there is nothing more to do or try before getting those patches applied.
Thanks and sorry for the noise ;)