CentOS 7 环境下 WildFly 应用服务器部署与优化指南
作为长期管理生产环境的运维人员,我深知在 CentOS 7 上部署和优化 WildFly(原 JBoss AS)对业务稳定性的重要性,以下分享经过验证的实践方案:
高效部署:基础与安全加固

# 安装 JDK (推荐 OpenJDK 11) sudo yum install -y java-11-openjdk-devel # 下载 WildFly (以 26.1.3.Final 为例) wget https://github.com/wildfly/wildfly/releases/download/26.1.3.Final/wildfly-26.1.3.Final.tar.gz tar xvf wildfly-*.tar.gz sudo mv wildfly-* /opt/wildfly # 创建专用系统用户 sudo useradd -r -s /sbin/nologin wildfly sudo chown -R wildfly:wildfly /opt/wildfly # 配置 SELinux 上下文 (关键安全步骤) sudo semanage fcontext -a -t bin_t "/opt/wildfly/bin/.*" sudo restorecon -Rv /opt/wildfly
配置文件关键修改 (/opt/wildfly/standalone/configuration/standalone.xml):
<!-- 修改绑定地址 -->
<interface name="public">
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
<!-- 添加安全用户 (避免默认管理员漏洞) -->
<management>
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local"/>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
</security-realm>
</security-realms>
</management> 深度性能调优实践
JVM 参数调整 (
standalone.conf):JAVA_OPTS="-Xms2G -Xmx2G -XX:MaxMetaspaceSize=512m" JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
线程池优化 (standalone.xml):
<subsystem xmlns="urn:jboss:domain:io:3.0"> <worker name="default" task-max-threads="200"/> </subsystem> <subsystem xmlns="urn:jboss:domain:ee:4.0"> <default-bindings context-service="java:jboss/ee/concurrency/context/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/> </subsystem>数据库连接池建议:
<datasource jndi-name="java:/MyDS" pool-name="MyDS_Pool"> <min-pool-size>10</min-pool-size> <max-pool-size>100</max-pool-size> <prefill>true</prefill> <flush-strategy>IdleConnections</flush-strategy> </datasource>
运维关键技巧

- 日志管理: 定期使用
journalctl -u wildfly检查 systemd 日志,配置logging.properties分割日志 - 热部署: 将应用 WAR 包放入
/opt/wildfly/standalone/deployments/实现秒级更新 - 端口冲突解决:
sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload - 内存泄漏排查: 配合
jcmd <pid> GC.heap_dump /path/to/dump.hprof分析
生产环境安全加固
# 禁用高危协议 sed -i 's/<http-upgrade enabled="true"/<http-upgrade enabled="false"/g' standalone.xml # 配置 TLS 1.2+ 加密 keytool -genkeypair -alias server -keyalg RSA -keysize 2048 -validity 365 -keystore server.keystore
<subsystem xmlns="urn:jboss:domain:undertow:10.0">
<https-listener name="https" socket-binding="https"
security-realm="SSLRealm" enable-http2="true"/>
</subsystem> 监控与高可用
- Prometheus 监控集成: 启用 WildFly 的 MicroProfile Metrics 模块
- 集群配置: 使用
standalone-ha.xml配置模版,结合 mod_cluster 实现负载均衡 - 健康检查端点:
http://server:9990/health对接 Kubernetes 探针
经验之谈: 在流量突增场景下,优先检查线程池阻塞情况而非盲目扩容,曾通过优化
org.jboss.as.threads日志级别定位到第三方库的同步锁问题,将 TPS 从 120 提升至 2100。
系统服务文件示例 (/etc/systemd/system/wildfly.service):
[Unit] Description=WildFly Application Server After=syslog.target network.target [Service] User=wildfly Group=wildfly ExecStart=/opt/wildfly/bin/standalone.sh -c standalone-full.xml Restart=on-failure RestartSec=30s LimitNOFILE=102642 [Install] WantedBy=multi-user.target
部署完成后使用 sudo systemctl daemon-reload && sudo systemctl start wildfly 启动服务,持续观察 GC 日志和线程状态比被动响应故障更重要,建议每周检查一次 server.log 中的 WARN 级别信息,版本更新时务必在测试环境验证配置兼容性,特别是安全补丁的回归测试。

