首页 > Java > java教程 > 正文

SpringBoot2应用在Docker容器中异常停止,如何排查libawt.so导致的Exited(139)错误?

心靈之曲
发布: 2025-03-03 16:50:01
原创
399人浏览过

springboot2应用在docker容器中异常停止,如何排查libawt.so导致的exited(139)错误?

排查 Spring Boot 2 应用在 Docker 容器中异常停止的问题

本文分析并解决在 CentOS 8.5 系统上,使用 Docker 19.03.13 和 docker-compose 部署的 Spring Boot 2 应用在 Docker 容器中异常停止的问题。

问题现象:

两个相同的 Spring Boot 2 应用实例(pod1 和 pod2)均使用 huttool 图形验证码,基于自定义 Dockerfile 构建镜像。pod2 容器运行一段时间后异常退出,状态显示为 Exited(139),pod1 由于设置了 restart: always 而自动重启。日志显示 Java 运行时出现致命错误 SIGILL (0x4),错误源于 libawt.so。服务器内存 (32G) 充足,问题依然存在。

问题根源分析:

SIGILL (0x4) 信号代表非法指令错误,错误信息指向 libawt.so,这是 Java AWT (Abstract Window Toolkit) 库的一部分,用于处理图形界面。由于应用使用了 huttool 图形验证码,问题可能与 AWT 库的依赖冲突或缺失有关。

基础镜像 openjdk:8-jdk-alpine 是精简版 Java 运行环境,缺少完整的图形化环境库。虽然 Dockerfile 中安装了 ttf-dejavu 和 fontconfig 字体库,但 AWT 需要 X Window 系统支持,而该镜像并未包含。

解决方案:

建议尝试以下方法:

  1. 在 Dockerfile 中安装 X Window 系统库: 除了 ttf-dejavu 和 fontconfig,还需要安装 xorg-x11-utils 等 X Window 系统相关库(具体包名需根据 CentOS 版本选择)。重新构建镜像并部署。

  2. 更换基础镜像: 使用包含完整 Java 运行环境和图形化支持的镜像,例如一个包含 X Window 系统的镜像,避免依赖缺失。

  3. 提供 hs_err_pid1.log 文件: 该文件包含更详细的错误信息,有助于精确定位问题。

通过以上方法,可以尝试解决 libawt.so 导致的 Spring Boot 2 应用在 Docker 容器中异常停止的问题。 最终解决方案取决于具体的系统配置和应用依赖。

以上就是SpringBoot2应用在Docker容器中异常停止,如何排查libawt.so导致的Exited(139)错误?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号