diff options
author | Eric Wong <e@80x24.org> | 2019-09-27 21:01:01 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-09-27 21:04:48 +0000 |
commit | 2fc42236f72ad16a33288f58086edc95da56c612 (patch) | |
tree | ba55eb23f905c5416c0f10942aaea0af68f8a96a /lib/PublicInbox | |
parent | 2052e92ba1f75efca6935558ea01898d01751f40 (diff) | |
download | public-inbox-2fc42236f72ad16a33288f58086edc95da56c612.tar.gz |
The httpd-supplied write callback is the leak culprit under Perl 5.16.3. undef-ing it immediately after use keeps a repeated "git fetch" loop from monotonically increasing memory and FD use on the Perl shipped with RHEL/CentOS 7.x. Other endpoints tested showed no increase in memory use under constant load with "ab -HAccept-Encoding:gzip -k", including the async psgi_qx code path used by $INBOX_URL/$OBJECT_ID/s/ via SolverGit module.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/Qspawn.pm | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/PublicInbox/Qspawn.pm b/lib/PublicInbox/Qspawn.pm index 5a300644..cb3dc516 100644 --- a/lib/PublicInbox/Qspawn.pm +++ b/lib/PublicInbox/Qspawn.pm @@ -281,6 +281,10 @@ sub psgi_return { $buf, $filter); $wcb->($r); } + + # Workaround a leak under Perl 5.16.3 when combined with + # Plack::Middleware::Deflater: + $wcb = undef; }; $limiter ||= $def_limiter ||= PublicInbox::Qspawn::Limiter->new(32); my $start_cb = sub { # may run later, much later... |