summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoan Touzet <wohali@apache.org>2017-05-08 22:14:24 -0400
committerJoan Touzet <wohali@apache.org>2017-05-08 22:14:24 -0400
commitd9811be4012d4d21d6b058846a3139a366fcf66a (patch)
treeb4b0ca3d5b1ed519f287163ed6fc65dca1ba9433
parente38b1d611d381fbb4415bc632fbeeb28ab46d667 (diff)
downloadcouchdb-1943-attachment-perf.tar.gz
Hibernate couch_stream after each write1943-attachment-perf
In COUCHDB-1946 Adam Kocoloski investigated a memory explosion resulting from replication of databases with large attachments (npm fullfat). He was able to stabilize memory usage to a much lower level by hibernating couch_stream after each write. While this increases CPU utilization when writing attachments, it should help reduce memory utilization. This patch is the single change that affected a ~70% reduction in memory. No alteration to the spawn of couch_stream to change the fullsweep_after setting has been made, in part because this can be adjusted at the erl command line if desired (-erl ERL_FULLSWEEP_AFTER 0).
-rw-r--r--src/couch/src/couch_stream.erl2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/couch/src/couch_stream.erl b/src/couch/src/couch_stream.erl
index 913977fb4..7da422baa 100644
--- a/src/couch/src/couch_stream.erl
+++ b/src/couch/src/couch_stream.erl
@@ -259,7 +259,7 @@ handle_call({write, Bin}, _From, Stream) ->
buffer_len=0,
md5=Md5_2,
identity_md5=IdenMd5_2,
- identity_len=IdenLen + BinSize}};
+ identity_len=IdenLen + BinSize}, hibernate};
true ->
{reply, ok, Stream#stream{
buffer_list=[Bin|Buffer],