From: Eric Wong Date: Tue, 8 Jan 2019 00:41:12 +0000 (+0000) Subject: view: stop storing all MIME objects on large threads X-Git-Tag: v1.2.0~420 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=7d02b9e64455831d3bda20cd2e64e0c15dc07df5 view: stop storing all MIME objects on large threads While we try to discard the $smsg (SearchMsg) objects quickly, they remain referenced via $node (SearchThread::Msg) objects, which are stored forever in $ctx->{mapping} to cull redundant words out of subjects in the thread skeleton. This significantly cuts memory bloat with large search results with '&x=t'. Now, the search results overhead of SearchThread::Msg and linked objects are stable at around 350K instead of ~7M per response in a rough test (there's more savings to be had in the same areas). Several hundred kilobytes is still huge and a large per-client cost; but it's far better than MEGABYTES per-client. --- diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index bb49c035..416cb4a8 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -218,7 +218,7 @@ sub index_entry { $rv .= $subj . "\n"; $rv .= _th_index_lite($mid_raw, \$irt, $id, $ctx); my @tocc; - my $mime = $smsg->{mime}; + my $mime = delete $smsg->{mime}; # critical to memory use my $hdr = $mime->header_obj; my $from = _hdr_names_html($hdr, 'From'); obfuscate_addrs($obfs_ibx, $from) if $obfs_ibx;