GithubHelp home page GithubHelp logo

amq-kahadb-tool's Introduction

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).
   -----------------------------------------------------------
   -----------------------------------------------------------

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.