From 7d02b9e64455831d3bda20cd2e64e0c15dc07df5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 8 Jan 2019 00:41:12 +0000 Subject: 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. --- lib/PublicInbox/View.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/PublicInbox') 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; -- cgit v1.2.3-24-ge0c7