使用Maven编译ActiveMQ Artemis时测试挂起问题求助
排查ActiveMQ Artemis源码构建测试挂起问题
排查步骤
查看完整调试日志
执行mvn clean install -X开启调试模式,获取更详细的线程执行信息,重点关注测试挂起后的线程状态、未处理异常或资源等待记录。检查系统资源与权限
- 确认
/app/data目录有充足磁盘空间,磁盘满会导致Journal写入阻塞; - 验证Maven运行用户对
/app/data及其子目录拥有读写权限,权限不足会导致文件操作失败; - 调整Maven JVM内存参数,例如执行
export MAVEN_OPTS="-Xmx2G -XX:MaxMetaspaceSize=512M"后重新构建,避免内存不足引发挂起。
- 确认
验证AIO依赖
日志显示使用AIO Journal,Linux系统需确保安装AIO库:- Debian/Ubuntu:
sudo apt-get install libaio-dev - RHEL/CentOS:
sudo yum install libaio
若无法安装AIO库,可强制使用NIO Journal,执行mvn clean install -Dactivemq.artemis.journal.type=NIO。
- Debian/Ubuntu:
检查端口占用
嵌入式Broker默认使用61616等端口,用以下命令检查是否被占用:netstat -tulpn | grep 61616 # 或使用ss命令 ss -tulpn | grep 61616若端口被占用,停止占用进程后重新运行测试。
分析线程栈
用ps aux | grep maven找到Maven进程ID,执行jstack <maven_pid>导出线程栈,查看挂起线程的调用栈,定位具体阻塞点(如IO等待、锁竞争等)。
内容的提问来源于stack exchange,提问作者Faringot
相关产品推荐
相关产品推荐

