activemq-artemis/docs/user-manual/en/slow-consumers.xml

53 lines
3.8 KiB
XML

<?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. -->
<!-- ============================================================================= -->
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "ActiveMQ_User_Manual.ent">
%BOOK_ENTITIES;
]>
<chapter id="slow-consumers">
<title>Detecting Slow Consumers</title>
<para>In this section we will discuss how ActiveMQ can be configured to deal with slow consumers. A slow consumer with
a server-side queue (e.g. JMS topic subscriber) can pose a significant problem for broker performance. If messages
build up in the consumer's server-side queue then memory will begin filling up and the broker may enter paging
mode which would impact performance negatively. However, criteria can be set so that consumers which don't
acknowledge messages quickly enough can potentially be disconnected from the broker which in the case of a
non-durable JMS subscriber would allow the broker to remove the subscription and all of its messages freeing up
valuable server resources.
</para>
<section id="slow.consumer.configuration">
<title>Configuration required for detecting slow consumers</title>
<para>By default the server will not detect slow consumers. If slow consumer detection is desired then see
<xref linkend="queue-attributes.address-settings"/>
for more details.
</para>
<para>The calculation to determine whether or not a consumer is slow only inspects the number of messages a
particular consumer has <emphasis>acknowledged</emphasis>. It doesn't take into account whether or not flow
control has been enabled on the consumer, whether or not the consumer is streaming a large message, etc. Keep
this in mind when configuring slow consumer detection.
</para>
<para>Please note that slow consumer checks are performed using the scheduled thread pool and that each queue on
the broker with slow consumer detection enabled will cause a new entry in the internal
<literal>java.util.concurrent.ScheduledThreadPoolExecutor</literal> instance. If there are a high number of
queues and the <literal>slow-consumer-check-period</literal> is relatively low then there may be delays in
executing some of the checks. However, this will not impact the accuracy of the calculations used by the
detection algorithm. See <xref linkend="server.scheduled.thread.pool"/> for more details about this pool.
</para>
</section>
</chapter>