/amq-kahadb-tool

Primary LanguageJavaMIT LicenseMIT

amq-kahadb-tool

KahaDBJournalsOptimizer

This tool allows reduce the number of journal files by moving durable subscriptions, pending messages and acks.

The Problems

Why do KahaDB log files remain after cleanup?

Clean-up of unreferenced KahaDB journal log files data-.log will occur every 30 seconds by default. If a data file is in-use it will not be cleaned up.

A data file may be in-use because:

   1. It contains a pending message for a destination or durable topic subscription.
   2. It contains an ack for a message which is in an in-use data file - the ack cannot be removed 
      as a recovery would then mark the message for redelivery.
   3. The journal references a pending transaction.
   4. It is a journal file, and there may be a pending write to it.

If the files will not cleaned up, it can lead to the disk space to fill up.

The Decisions

Necessary moving all durable subscriptions, pending messages and part acks for them, saving pending transactions in one or more files.

How to use

   1. Stop ActiveMQ.
   2. Execute: java -jar .\<release version>\KahaDBJournalsOptimizer.jar "journals directory"
   3. Start ActiveMQ.

The Look

example:

   java -jar .\<release version>\KahaDBJournalsOptimizer.jar "D:\apache-activemq-5.13.2\data\kahadb"

result:

   -----------------------------------------------------------
   -----------------------------------------------------------
   START JOURNALS ANALYSIS

   - Directory: 'd:\activemq\apache-activemq-5.13.2\data\kahadb'.

   - Journal size: 32 MB (33554432).
   - Journals: 854 (Total size: 26,69 GB (28655341738)).
   - Topics: 1248.
   - Queues: 2.

   - It took time: 423.931 seconds.
   -----------------------------------------------------------
   START JOURNALS DATA OPTIMIZATION

   - Subscriptions moved: 1285 (It took time: 75.447 seconds).
   - Messages moved: 5378 (It took time: 259.997 seconds).
   - Journals remained: 1 (Total size: 3,48 MB (3651054)).

   - It took time: 335.494 seconds.
   -----------------------------------------------------------
   -----------------------------------------------------------
   RENAME JOURNALS DIRECTORIES

   - Directory optimized: 'D:\activemq\apache-activemq-5.13.2\data\kahadb'.
   - Backup directory: 'D:\activemq\apache-activemq-5.13.2\data\kahadb_1459951397015'.

   -----------------------------------------------------------
   -----------------------------------------------------------

KahaDBJournalsReader

This tool displays commands of journal files.

How to use

   java -jar .\<release version>\KahaDBJournalsReader.jar "journals directory"

The Look

example:

   java -jar .\<release version>\KahaDBJournalsReader.jar "D:\apache-activemq-5.13.2\data\kahadb"

result:

   -----------------------------------------------------------
   (1) Journal: 'd:\activemq\apache-activemq-5.13.2\data\kahadb\db-1.log'.

   1 CommandType: KAHA_SUBSCRIPTION_COMMAND - TOPIC (DestId: 1:test.topic.0), ClientId: client0, SubKey: client0:EXACTLY_ONCE:test/topic/0.
   2 CommandType: KAHA_SUBSCRIPTION_COMMAND - TOPIC (DestId: 1:test.topic.1), ClientId: client1, SubKey: client1:EXACTLY_ONCE:test/topic/1.
   3 CommandType: KAHA_SUBSCRIPTION_COMMAND - TOPIC (DestId: 1:test.topic.2), ClientId: client2, SubKey: client2:EXACTLY_ONCE:test/topic/2.
   4 CommandType: KAHA_ADD_MESSAGE_COMMAND - TOPIC (DestId: 1:test.topic.2), MsgId: ID:compPC-41418-1459948891354-1:1:1:1:1, TransId: TX:ID:compPC-41418-1459948891354-1:1:1.
   5 CommandType: KAHA_ADD_MESSAGE_COMMAND - TOPIC (DestId: 1:test.topic.2), MsgId: ID:compPC-41418-1459948891354-1:1:1:1:2, TransId: TX:ID:compPC-41418-1459948891354-1:1:1.
   6 CommandType: KAHA_ADD_MESSAGE_COMMAND - TOPIC (DestId: 1:test.topic.2), MsgId: ID:compPC-41418-1459948891354-1:1:1:1:3, TransId: TX:ID:compPC-41418-1459948891354-1:1:1.
   7 CommandType: KAHA_ADD_MESSAGE_COMMAND - TOPIC (DestId: 1:test.topic.2), MsgId: ID:compPC-41418-1459948891354-1:1:1:1:4, TransId: TX:ID:compPC-41418-1459948891354-1:1:1.
   8 CommandType: KAHA_ADD_MESSAGE_COMMAND - TOPIC (DestId: 1:test.topic.2), MsgId: ID:compPC-41418-1459948891354-1:1:1:1:5, TransId: TX:ID:compPC-41418-1459948891354-1:1:1.
   9 CommandType: KAHA_COMMIT_COMMAND - TransId: TX:ID:compPC-41418-1459948891354-1:1:1.
   -----------------------------------------------------------

KahaDBJournalsStatistics

This tool displays statistics journal files. Number of topics, queues and commands in the journal file.

How to use

   java -jar .\<release version>\KahaDBJournalsStatistics.jar "journals directory"

The Look

example:

   java -jar .\<release version>\KahaDBJournalsStatistics.jar "D:\apache-activemq-5.13.2\data\kahadb"

result:

   -----------------------------------------------------------
   -----------------------------------------------------------
   (1) Journal: 'd:\activemq\apache-activemq-5.13.2\data\kahadb\db-1.log'.
   -----------------------------------------------------------
   Destination statistics:
   - Topics: 3.
   - Queues: 0.

   TOPIC (DestId: 1:test.topic.0).
   + CmdType: KAHA_SUBSCRIPTION_COMMAND (Count: 1, TotalSize: 172 Byte(s) (172), ~AvrgSize: 172 Byte(s) (172), LastBigSize: 172 Byte(s) (172), LastSize: 172 Byte(s) (172))
   All commands: 1 (Total size: 172 Byte(s) (172).

   TOPIC (DestId: 1:test.topic.1).
   + CmdType: KAHA_SUBSCRIPTION_COMMAND (Count: 1, TotalSize: 172 Byte(s) (172), ~AvrgSize: 172 Byte(s) (172), LastBigSize: 172 Byte(s) (172), LastSize: 172 Byte(s) (172))
   All commands: 1 (Total size: 172 Byte(s) (172).

   TOPIC (DestId: 1:test.topic.2).
   + CmdType: KAHA_SUBSCRIPTION_COMMAND (Count: 1, TotalSize: 172 Byte(s) (172), ~AvrgSize: 172 Byte(s) (172), LastBigSize: 172 Byte(s) (172), LastSize: 172 Byte(s) (172))
   + CmdType: KAHA_ADD_MESSAGE_COMMAND (Count: 5, TotalSize: 2,18 KB (2235), ~AvrgSize: 447 Byte(s) (447), LastBigSize: 447 Byte(s) (447), LastSize: 447 Byte(s) (447))
   All commands: 6 (Total size: 2,35 KB (2407).

   Commands without destination:
   + CmdType: KAHA_COMMIT_COMMAND (Count: 1, TotalSize: 79 Byte(s) (79), ~AvrgSize: 79 Byte(s) (79), LastBigSize: 79 Byte(s) (79), LastSize: 79 Byte(s) (79))
   All commands: 1 (Total size: 79 Byte(s) (79).
   -----------------------------------------------------------
   Command statistics:
   - Topics: 3 (messages: 8, +subscriptions: 3, -subscription: 0).
   - Queues: 0 (messages: 0).
   - Other messages: 1.

   Commands:
   + CmdType: KAHA_SUBSCRIPTION_COMMAND (Count: 3, TotalSize: 516 Byte(s) (516), ~AvrgSize: 172 Byte(s) (172), LastBigSize: 172 Byte(s) (172), LastSize: 172 Byte(s) (172))
   + CmdType: KAHA_ADD_MESSAGE_COMMAND (Count: 5, TotalSize: 2,18 KB (2235), ~AvrgSize: 447 Byte(s) (447), LastBigSize: 447 Byte(s) (447), LastSize: 447 Byte(s) (447))
   + CmdType: KAHA_COMMIT_COMMAND (Count: 1, TotalSize: 79 Byte(s) (79), ~AvrgSize: 79 Byte(s) (79), LastBigSize: 79 Byte(s) (79), LastSize: 79 Byte(s) (79))
   All commands: 9 (Total size: 2,76 KB (2830).
   -----------------------------------------------------------
   -----------------------------------------------------------