在日常部署或运行 WebLogic 时,如果遇到 内存溢出、连接不足、线程拥塞、拒绝连接 等问题,可以通过以下八个方面进行调优:
一、内存配置优化
在部署或启动项目时报错:java.lang.OutOfMemoryError: PermGen space 由于WebLogic的配置问题,我们的测试出现了失败情况。原因是为WebLogic分配的内存太少了。通过修改setDomainEnv.sh文件来增加内存分配。 打开setDomainEnv.sh文件,该文件的路径位于: /weblogic/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh
修改以下参数:(当前操作系统,选择修改“SUN”)if [ "${JAVA_VENDOR}" = "Sun" ] ; thenWLS_MEM_ARGS_64BIT="-Xms256m -Xmx512m" //64位export WLS_MEM_ARGS_64BIT
WLS_MEM_ARGS_32BIT="-Xms256m -Xmx512m" //32位export WLS_MEM_ARGS_32BIT
if [ "${JAVA_VENDOR}" = "Sun" ] ; thenWLS_MEM_ARGS_64BIT="-Xms4096m -Xmx4096m" //64位export WLS_MEM_ARGS_64BIT
WLS_MEM_ARGS_32BIT="-Xms4096m -Xmx4096m" //32位export WLS_MEM_ARGS_32BIT
⚠️ 建议 JVM 最大内存不超过物理内存的 50%~60%,一般最大值不超过 8G。
二、线程池参数优化
调整连接线程数,默认线程比较少,添加以下参数
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=500"export JAVA_OPTIONS
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MaxPoolSize=3000"export JAVA_OPTIONS
???? 推荐分配: CPU 核心数 × 50
三、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
四、操作系统参数优化
增加用户进程数以及能打开的文件数:
编辑
/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
六、连接缓存优化(Accept Backlog)
Config.xml 文件中的元素接受缓存数( AcceptBacklog )属性是用来设定请求 WebLogic 实例的连接数,在拒绝额外的请求之前,能接受设定的缓存数。 AcceptBacklog 属性指定有多少 TCP 连接缓存在等待队列,这个固定的队列存放了 TCP 堆栈已经收到但应用程序还没有收到的连接请求。默认值是 50 ,最大值由操作系统决定。 在控制台调整接受缓存数的步骤:
-
启动 WebLogic ,访问控制台。
-
展开左边面板 Servers 节点。
-
点击你要配置的服务器实例的名称。
-
选择配置( Configuration )―― > 调整( Tuning )标签。
-
根据需要修改默认的接受缓存数( Accept Backlog ):
-
点击应用( Apply ),保存设置。
在运行期间,如果许多客户端连接得不到响应或被拒绝,并且服务器端也没有错误消息,说明接受缓存的值可能太小。 在你访问 WebLogic 时,如果收到“拒绝连接( connection refused )”的提示,则应该增加接受缓存的默认值的 25 %。继续增加其值的 25 %,直到停止出现这样的提示。
七、JDBC 连接池优化
调整 JDBC 连接池的容量 在产品系统中,就应该把 InitialCapacity 的值设为与 MaxCapacity 值相同。默认值比较小,可能会连接池溢出。这样,在服务器启动时,所有的连接就会被创建。如果你调整了 MaxCapacity 值后,一定要确信 InitialCapacity 值设置与 MaxCapacity 值相同。 如果 InitialCapacity 比 MaxCapacity 值少,当负荷增加时,服务器需要创建额外的数据库连接。当服务器处于低负荷时,所有的资源应该是尽快的完成请求,而不是创建新的数据库连接。 1 、登录weblogic 控制台,选择服务——数据源——选择需要优化的数据源 2 、选择连接池,点击下面的高级,最后点击锁定并编辑按钮 3 、初始容量优化
八、启用本地 IO 性能包
本地 Socket 读的多线程有自己的执行队列而不需要借用默认的执行队列线程,这样可以让默认执行线程很从容去处理应用程序。 如果 Enable Native IO 复选框没有被选择,选中即可。 通过管理控制台来验证,步骤如下:
- 启动管理服务器。
- 访问管理控制台。
- 展开左边面板的 Servers 节点,显示域服务。
- 点击你要配置的服务实例。
- 选择 配置 ——优化
- 如果 Enable Native IO 复选框没有被选择,选中即可。
- 点击保存 。
- 重启服务器。
总结
WebLogic 调优可以从 JVM 内存、线程池、JDBC、操作系统、IO 五大层面着手。 合理的参数配置能显著提升系统稳定性和吞吐量,避免“高并发时掉链子”的尴尬。



2 、选择连接池,点击下面的高级,最后点击锁定并编辑按钮
3 、初始容量优化

