如何优化centos中weblogic启动速度
小樊
37
2025-12-29 13:27:33
CentOS 上优化 WebLogic 启动速度
一 快速见效的改动
- 加速熵源初始化:在域目录的 setDomainEnv.sh 中加入
JAVA_OPTIONS=“${JAVA_OPTIONS} -Djava.security.egd=file:/dev/./urandom”
或编辑 $JAVA_HOME/jre/lib/security/java.security,将
securerandom.source=file:/dev/urandom 改为 securerandom.source=file:/dev/./urandom。
说明:部分 JDK/熵源 初始化较慢,改用 /dev/urandom 可显著缩短启动卡顿时间。修改后重启观察效果。
- 启动时免密:在 servers/AdminServer/security 下创建 boot.properties,写入
username=你的用户名
password=你的密码
首次会加密写入,后续启动不再交互输入,减少人为等待与脚本阻塞。
- 提升文件描述符限制:在 /etc/security/limits.conf 增加
- soft nofile 65535
- hard nofile 65535
保存后重新登录或在 systemd 服务中配置 LimitNOFILE=65535,避免 “Too many open files” 导致的启动迟缓或失败。
二 系统层面的优化
- 精简开机与防火墙规则:关闭不必要的服务与端口,仅放行业务所需端口,减少资源占用与安全检查开销。
- 内核网络参数(/etc/sysctl.conf):
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 1024
执行 sysctl -p 使配置生效,改善短连接与高并发场景下的网络收尾与排队性能。
- SELinux:如与中间件存在兼容性冲突,可在测试环境先设为 permissive 验证,再决定是否禁用;生产环境建议保持 enforcing 并通过策略精细化放行。
- 文件系统挂载:对应用与日志目录使用 noatime 挂载选项,降低元数据写入次数,缩短 I/O 等待。
三 JVM 与 WebLogic 配置优化
- 堆与 GC:在 setDomainEnv.sh 中设置合适的堆与垃圾回收器,优先保证 -Xms 与 -Xmx 等值,减少运行期扩缩堆带来的停顿;如 JDK 8 可选 G1GC,示例:
USER_MEM_ARGS=“-Xms4g -Xmx4g -XX:+UseG1GC”
export USER_MEM_ARGS
注意:不同版本与负载的最佳 GC 策略不同,需结合压测验证。
- 执行队列与线程:在控制台或 config.xml 调整 Execute Queue ThreadCount、Accept Backlog、必要时启用 Native IO,避免队列过长与线程饥饿导致的启动与运行期排队。
- JDBC 连接池:将 InitialCapacity 与 MaxCapacity 设为接近(避免启动期频繁扩容),并将 MaxCapacity 与执行队列线程数匹配,减少连接等待。
- 运行模式:生产环境启用 生产模式(Production Mode),其默认线程与连接池等参数更偏向性能与稳定性。
四 启动与维护建议
- 前台启动用于排障:首次或疑难问题建议前台执行 ./startWebLogic.sh,直接观察卡点与异常堆栈,便于定位。
- 后台启动与日志:使用 nohup ./startWebLogic.sh & 将输出重定向到 nohup.out,便于事后分析;必要时结合脚本轮询 “Server state is RUNNING” 判定启动完成。
- 监控与迭代:用 jstat、jconsole、VisualVM 观察堆、GC、线程与类加载等指标,结合业务压测逐步微调 堆大小、GC 策略、线程与连接池,在测试环境验证后再推广至生产。