Diagnostics
HiveMQ Community Edition includes diagnostic mode and troubleshooting tools to help identify and resolve issues during development and production.Diagnostic Mode
Diagnostic mode enables enhanced logging and debugging features for troubleshooting broker issues.Starting in Diagnostic Mode
Linux/Unix/macOS
Windows
What Diagnostic Mode Does
When started in diagnostic mode, HiveMQ:-
Enables enhanced JVM diagnostics
- Heap dump on OutOfMemoryError
- Error log files for JVM crashes
- Crash on OutOfMemoryError (for immediate detection)
-
Activates diagnostic flag
- Sets
-DdiagnosticMode=truesystem property - Can be used by extensions for conditional debug behavior
- Sets
-
Displays detailed startup information
- HIVEMQ_HOME directory
- Java options (JAVA_OPTS)
- Java version
- Configuration details
Diagnostic Script Configuration
The diagnostic scripts (diagnostics.sh and diagnostics.bat) configure:
JVM Diagnostic Options:
diagnosticMode=true- Enables diagnostic modehivemq.home- HiveMQ installation directoryjava.net.preferIPv4Stack=true- IPv4 preference
- Enabled by default (can be disabled with
HIVEMQ_JMX_ENABLED=false) - Port: 9010 (configurable via
HIVEMQ_JMX_PORT) - No authentication (development default)
- Remote access enabled
Environment Variables
Customize diagnostic mode behavior:Requirements
Java Version
HiveMQ requires Java 11 or higher. The diagnostic scripts verify:Platform-Specific Requirements
Linux/Unix:- Bash shell
- Java Runtime Environment (JRE) 11+
- Read/write permissions on HIVEMQ_HOME
- Administrator rights (recommended)
- Java Runtime Environment (JRE) 11+
- Read/write permissions on HIVEMQ_HOME
Diagnostic Outputs
Heap Dumps
When OutOfMemoryError occurs, HiveMQ generates: File Location:- Eclipse Memory Analyzer (MAT)
- VisualVM
- JProfiler
- YourKit
Error Logs
JVM crash logs are written to:- Stack trace at crash point
- Thread information
- Memory state
- JVM configuration
- System information
Troubleshooting Common Issues
Memory Issues
OutOfMemoryError
Symptoms:- HiveMQ crashes with OOM error
- Heap dump generated
- Start in diagnostic mode
- Reproduce the issue
- Analyze heap dump with MAT or VisualVM
- Too many retained messages
- Large message queues for disconnected clients
- Memory leak in custom extension
- Insufficient heap size
Connection Issues
Enable Connection Debug Logging
Modifylogback.xml:
Check Port Availability
Message Flow Issues
Enable Message Handler Logging
Monitor Metrics
Connect via JMX (port 9010) and check:com.hivemq.messages.dropped.count- Should be 0com.hivemq.mqtt.connection.not-writable.current- Should be low- Message counters for throughput
Persistence Issues
Enable Persistence Logging
Check Disk Space
Extension Issues
Enable Extension Logging
Check Extension Loading
Look for startup messages:Performance Diagnostics
Thread Dumps
Capture thread dumps for performance analysis:GC Logging
Enable garbage collection logging:JMX Monitoring
Connect JConsole or VisualVM to monitor:- Heap usage
- Thread count
- GC activity
- CPU usage
- Custom HiveMQ metrics
Diagnostic Checklist
When troubleshooting issues:- Start HiveMQ in diagnostic mode
- Enable appropriate debug logging
- Monitor JMX metrics
- Check log files for errors
- Verify Java version (11+)
- Check disk space availability
- Review heap dump if OOM occurred
- Capture thread dumps if hanging
- Monitor GC activity
- Test with minimal configuration
- Disable extensions to isolate issues
Getting Help
Information to Collect
When reporting issues, gather:-
Version Information
- HiveMQ version
- Java version
- Operating system
-
Logs
- HiveMQ logs with DEBUG level
- JVM error logs
- GC logs
-
Configuration
- config.xml
- logback.xml
- Extension configurations
-
Diagnostic Data
- Thread dumps
- Heap dumps (if OOM)
- JMX metrics snapshot
-
Reproduction Steps
- Minimal configuration to reproduce
- Load characteristics
- Timeline of events
Community Support
For HiveMQ Community Edition:- GitHub Issues: HiveMQ Community Edition
- HiveMQ Community Forum
- Stack Overflow (tag:
hivemq)
See Also
- Logging Configuration - Configure detailed logging
- Monitoring - JMX monitoring setup
- Metrics Reference - Available metrics for diagnostics