diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2015-01-09 16:04:29 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2015-01-09 16:04:29 +0000 |
| commit | 814b54783e326508bcbdce7b6ba251c782b9b1a9 (patch) | |
| tree | aaffea412be9e5c9145c0aa3f18d33f278d0dc7c /src | |
| parent | 9894eed84475fc6ebf73782684f41ef8fdab87c2 (diff) | |
| download | rabbitmq-server-git-814b54783e326508bcbdce7b6ba251c782b9b1a9.tar.gz | |
So that term_to_binary/1 there somehow seemed to end up creating a lot of garbage under heavy load; pumping millions of messages into a queue became almost quadratic. I'm not sure how or why, but let's try another tactic.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_variable_queue.erl | 2 | ||||
| -rw-r--r-- | src/truncate.erl | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/rabbit_variable_queue.erl b/src/rabbit_variable_queue.erl index a0f14b0ab4..8a1e52cfcd 100644 --- a/src/rabbit_variable_queue.erl +++ b/src/rabbit_variable_queue.erl @@ -1414,7 +1414,7 @@ determine_persist_to(Msg, #message_properties{size = Size}) -> %% anyway. case Size >= IndexMaxSize of true -> msg_store; - false -> case size(term_to_binary(Msg)) >= IndexMaxSize of + false -> case truncate:term_limit(Msg, IndexMaxSize) of true -> msg_store; false -> queue_index end diff --git a/src/truncate.erl b/src/truncate.erl index 820af1bf86..3e180a3aa7 100644 --- a/src/truncate.erl +++ b/src/truncate.erl @@ -20,7 +20,7 @@ -record(params, {content, struct, content_dec, struct_dec}). --export([log_event/2, term/2]). +-export([log_event/2, term/2, term_limit/2]). %% exported for testing -export([test/0]). |
