暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

WebLogic 性能调优最佳实践:一线工程师的实战经验总结

本文整理自项目一线工程经验,内容来源于《WebLogic 性能调优最佳实践文档》,为 WebLogic 在实际部署与运行过程中常见性能问题的标准化处理与优化方案汇总。
文档内容仅做结构与表达形式调整,技术内容与原文完全一致。

一、文档背景说明

在 WebLogic 项目实施过程中,经常会遇到如下问题:
• 启动时报 OutOfMemoryError
• 并发稍高就出现连接拒绝
• 数据源连接池频繁耗尽
• CPU、线程、连接数利用率异常

这些问题大多并非业务代码导致,而是 WebLogic 默认配置偏保守。
因此有必要在项目部署或上线前,对 WebLogic 进行一次系统性的性能调优。

二、WebLogic 内存配置

在部署或启动项目时报错:

java.lang.OutOfMemoryError: PermGen space

由于 WebLogic 的配置问题,我们的测试出现了失败情况。
原因是为 WebLogic 分配的内存太少了。

配置调整方式

通过修改 setDomainEnv.sh 文件来增加内存分配。

文件路径:

/weblogic/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh

修改以下参数(当前操作系统,选择修改 “SUN”):

根据操作系统内存,一般占用操作系统的 50%–60%,建议最大不要超过 8G

原默认配置如下:

if [ "${JAVA_VENDOR}" = "Sun" ] ; then
    WLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m"    //64位
    export WLS_MEM_ARGS_64BIT

    WLS_MEM_ARGS_32BIT="-Xms256m -Xmx512m"    //32位
    export WLS_MEM_ARGS_32BIT
fi

调整后配置如下:

if [ "${JAVA_VENDOR}" = "Sun" ] ; then
    WLS_MEM_ARGS_64BIT="-Xms4096m -Xmx4096m"    //64位
    export WLS_MEM_ARGS_64BIT

    WLS_MEM_ARGS_32BIT="-Xms4096m -Xmx4096m"    //32位
    export WLS_MEM_ARGS_32BIT
fi

三、修改默认线程数

WebLogic 默认连接线程数较少,需要进行调整。

默认 50,按 CPU 数来分配
分配数量建议:CPU 数 × 50

添加以下参数:

JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=500"
export JAVA_OPTIONS

JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MaxPoolSize=3000"
export JAVA_OPTIONS

四、优化 Java 参数

修改 WebLogic 使用的 JDK 随机数配置,避免启动和访问过程中的阻塞问题。

cd /weblogic/jdk1.6.0_45/jre/lib/security/
vi java.security

将:

securerandom.source=file:/dev/urandom

修改为:

securerandom.source=file:/dev/./urandom

五、操作系统参数优化

增加用户进程数以及能打开的文件数。

修改系统配置文件:

vi /etc/security/limits.conf

配置如下:

* soft nofile 65535
* hard nofile 65535
* soft nproc  65535
* hard nproc  65535

六、应用服务器优化(控制台启动)

控制台启动需要配置,后台启动不需要配置。
实际大小配置参考前面内存配置与线程配置部分。

-Xms1024m -Xmx1024m
-Dweblogic.threadpool.MinPoolSize=800
-Dweblogic.threadpool.MaxPoolSize=1200

image.png

七、优化连接缓存(Accept Backlog)

config.xml 文件中的元素接受缓存数(AcceptBacklog)属性,用来设定请求 WebLogic 实例的连接数。

在拒绝额外请求之前,能接受设定的缓存数。

AcceptBacklog 属性指定:
• TCP 连接在等待队列中的缓存数量
• 该队列存放 TCP 堆栈已接收但应用程序尚未处理的连接请求

默认值:50
最大值:由操作系统决定。

控制台调整步骤
1. 启动 WebLogic,访问控制台
2. 展开左边面板 Servers 节点
3. 点击需要配置的服务器实例
image.png
4. 选择 Configuration → Tuning

根据需要修改默认的接受缓存数(Accept Backlog),点击 Apply 保存。
image.png
调整经验说明
• 如果运行期间客户端连接得不到响应或被拒绝
• 且服务器端无错误日志

说明接受缓存数可能过小。

如果访问 WebLogic 时收到:

connection refused

建议:
• 先增加 25%
• 若仍存在问题,再继续增加 25%
• 直到不再出现该提示

八、JDBC 调优

调整 JDBC 连接池容量

在生产系统中,InitialCapacity 的值应设置为与 MaxCapacity 相同。

默认值较小,可能导致连接池溢出。

如果 InitialCapacity 小于 MaxCapacity:
• 高负载时需要动态创建数据库连接
• 增加系统开销
• 延迟业务请求处理

调整步骤
1. 登录 WebLogic 控制台
image.png
2. 选择 服务 → 数据源 → 需要优化的数据源
3. 选择 连接池,点击下方 高级
image.png
4. 点击 锁定并编辑
5. 调整 初始容量(InitialCapacity)

九、使用 WebLogic 自有的 IO 性能包(Native IO)

本地 Socket 读的多线程有自己的执行队列,不需要借用默认执行线程。

这样可以让默认执行线程更专注于处理应用逻辑。

如果 Enable Native IO 复选框未选中,需要启用。

验证与开启步骤
1. 启动管理服务器
2. 访问管理控制台
3. 展开左边面板 Servers
4. 点击目标服务器实例
5. 选择 Configuration → Tuning
6. 勾选 Enable Native IO
7. 点击保存
8. 重启服务器
image.png

十、结语

以上内容为 WebLogic 在实际项目中总结出的性能调优实践方案,
覆盖了:
• JVM 内存
• 线程池
• 操作系统
• 连接缓存
• JDBC 连接池
• IO 性能优化

全部内容均来自原始工程文档,仅进行了博客化整理,未删减任何技术细节。

最后修改时间:2025-12-23 09:43:53
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论