diff options
author | Joan Touzet <wohali@apache.org> | 2017-05-08 22:14:24 -0400 |
---|---|---|
committer | Joan Touzet <wohali@users.noreply.github.com> | 2017-05-09 16:06:35 -0400 |
commit | 7c3aef6999691bd02fbae56a72c991a6150af261 (patch) | |
tree | 9e78b3a41e97703d4c296f8dc52e202175240ba6 | |
parent | 9568bb7bed6b138663281d4d9065f5dad2794556 (diff) | |
download | couchdb-7c3aef6999691bd02fbae56a72c991a6150af261.tar.gz |
Hibernate couch_stream after each write
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.erl | 2 |
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], |