summaryrefslogtreecommitdiff
path: root/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Flow-To-Disk.xml
blob: 4ffde911bfc59fce96f19701238d5f852b2ca206 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8"?>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->

<section id="Java-Broker-Runtime-Flow-To-Disk">
  <title>Flow to Disk</title>
  <para>Flow to disk limits the amount of heap memory that can be occupied by messages. Once this
    limit is reached any new transient messages and all existing transient messages will be
    transferred to disk. Newly arriving transient messages will continue to go to the disk until the
    cumulative size of all messages falls below the limit once again.</para>
  <para>By default the Broker makes 40% of the max available memory for messages. This memory is
    divided between all the queues across all virtual hosts defined on the Broker with a percentage
    calculated according to their current queue size. These calculations are refreshed periodically
    by the housekeeping cycle.</para>
  <para>For example if there are two queues, one containing 75MB and the second 100MB messages
    respectively and the Broker has 1GB heap memory with the default of 40% available for messages.
    The first queue will have a target size of 170MB and the second 230MB. Once 400MB is taken by
    messages, messages will begin to flow to disk. New messages will cease to flow to disk when
    their cumulative size falls beneath 400MB.</para>
  <para>Flow to disk is configured by Broker context variable
      <literal>broker.flowToDiskThreshold</literal>. It is expressed as a size in bytes and defaults
    to 40% of the JVM maximum heap size.</para>
  <para>Log message <link linkend="Java-Broker-Appendix-Operation-Logging-Message-BRK-1014"
      >BRK-1014</link> is written when the feature activates. Once the total space of all messages
    decreases below the threshold, the message <link
      linkend="Java-Broker-Appendix-Operation-Logging-Message-BRK-1015">BRK-1015</link> is written
    to show that the feature is no longer active.</para>
</section>