线上稳定运行java应用关键在“装对”和“管住”:须先确认cpu架构(uname -m)与发行版(cat /etc/os-release),手动部署eclipse temurin等官方jdk/jre tar包至/opt/java,显式指定java_home,再验证https、时区、actuator及gc日志,并配妥jvm参数、安全组、监控与selinux策略。

直接在云服务器上装个 java 命令不难,但线上稳定运行 Java 应用,关键不在“装上”,而在“装对”和“管住”。尤其在 AWS EC2 或阿里云 ECS 这类多架构、多发行版环境中,一步选错就可能引发 Illegal instruction 或 Exec format error 这类底层崩溃,重启都救不回来。
先查清系统底细,再动手
云服务器不是本地虚拟机,CPU 架构(x86_64 vs aarch64)和发行版(Ubuntu 22.04、Alibaba Cloud Linux 3、Amazon Linux 2023)必须确认清楚,否则包管理器安装极易翻车:
-
看 CPU 架构:运行
uname -m,输出x86_64或aarch64—— Graviton 实例、阿里云部分新机型默认是 aarch64 -
看发行版和内核:运行
cat /etc/os-release,重点关注ID和VERSION_ID,比如ID="alibaba"+VERSION_ID="3" -
别信“默认 JDK”:
yum install java-17-openjdk-jre在 CentOS 7 上可能因 glibc 版本不兼容直接崩溃;apt install default-jdk在 Ubuntu 上装的可能是 Java 11,而非你项目要求的 17 或 21
推荐手动部署 OpenJDK tar.gz 包
生产环境强烈建议绕过包管理器,用官方二进制包手动部署。好处是路径可控、版本明确、多版本共存方便、不污染系统 PATH:
- 从 Eclipse Temurin 或 IBM Semeru 下载对应架构的 JRE 或 JDK tar.gz(例如:
temurin-17.0.9+9-jre_linux-aarch64.tar.gz) - 解压到统一目录,如
/opt/java/jre-17.0.9,权限设为root:root且755 - 在应用启动脚本中显式指定:
JAVA_HOME=/opt/java/jre-17.0.9PATH=$JAVA_HOME/bin:$PATH
不依赖全局java命令,避免服务间冲突 - 如需精简体积(尤其容器场景),可用
jlink构建最小化运行时,剔除不用模块
验证不能只看 version
java -version 成功只是起点。线上真正要验的是 JVM 能否可靠支撑业务:
-
HTTPS 是否正常:运行一个简单
HttpsURLConnection示例,确认 CA 证书链完整(云服务器常缺根证书) -
时区是否正确:
java -XshowSettings:properties -version | grep user.timezone,避免日志时间错乱或定时任务偏移 -
Spring Boot Actuator 是否可访问:若用 Spring,启动后 curl
/actuator/health,确认 JVM 指标采集通道畅通 -
GC 日志是否可写:加参数
-Xlog:gc*:file=/var/log/myapp/gc.log,检查磁盘权限与路径是否存在
配套配置要点(非可选)
Java 环境不是孤立存在,需同步处理几个关键环节:
-
JVM 参数要匹配实例规格:4 核 8G 的 ECS,建议
-Xms4g -Xmx4g;大内存(≥16G)优先试 ZGC,中小堆用 G1 - 安全组只放必要端口:如仅开放 8080(应用)、22(SSH)、443(HTTPS),禁止全端口放行
- 监控必须接入:阿里云 ARMS 或 AWS CloudWatch 集成 Java 探针,自动抓取线程数、堆内存、HTTP 响应耗时等核心指标
-
防火墙与 SELinux 注意兼容性:CentOS/RHEL 系统若启用 SELinux,需确保
sestatus为 permissive 或 targeted,并用setsebool -P httpd_can_network_connect 1允许 Java 进程外连
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











