前言
何为外部应用节点?外部应用节点提供给供应商使用的节点,且该节点不使用Java Form,同时共享一个数据库。但外部节点的内存使用及CPU均是使用它本身的服务器资源。不会造成资源争用的问题。
问题
用户登录EBS时出现Weblogic错误,从架构上分析,外部节点仅使用OACORE、Weblogic服务。所以问题基本上出现在这两个地方。分析其服务日志就能得出问题出现的原因。

错误日志
bash
2026-06-16 9:45:45
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been d
isabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=
Code Cache [0x00007f3b009a7000, 0x00007f3b039a7000, 0x00007f3b039a7000)
total_blobs=10255 nmethods=4543 adapters=1137 free_code_cache=3074Kb
java.lang.OutOfMemoryError: Java heap space
at java.lang.reflect.Array.newInstance(Array.java:70)
at oracle.jdbc.driver.BufferCache.get(BufferCache.java:215)
at oracle.jdbc.driver.PhysicalConnection.getCharBuffer(PhysicalConnection.java:12342)
at oracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.java:1112)
at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:283)
at oracle.jdbc.driver.T4CTTIdcb.receive(T4CTTIdcb.java:150)
at oracle.jdbc.driver.T4C8Oall.readDCB(T4C8Oall.java:895)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:389)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:205)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:548)
日志分析
1、 由于 PSPermGen 内存耗尽,GC 无法自动回收内存,导致 JIT 编译器被禁用,系统执行效率显著下降。多数线程因无法分配内存而长期处于等待状态,最终致使 Web 页面响应缓慢,约 10 秒后触发 WebLogic 错误。
2、 外部节点数据源 EBSDataSource 抛出连接错误,导致 OHS 服务与 内部应用节点之间的通信中断,相关进程无法继续执行。
3、 外部节点中的核心服务 OACORE_SERVER 出现错误,最终导致外部节点实例发生崩溃。
AWR报告分析
1、数据库负载
基于 CPU 核心数(32)、Elapsed Time(60.07 分钟)及 DB Time(67.32 分钟)进行计算,数据库实际负载仅为 3.5%,表明系统存在大量空闲时间,整体资源利用率较低。

2、内存分析
PGA:规划值为 1024M,当前使用量已达 4474M,严重超出规划;
shared_pool_size(SGA 参数):规划值为 2000M,当前值为 2960M,同样超出规划。
Shared_pool_size 规划大小:

PGA的规划大小:

实际使用情况:

问题总结
1、 此次 外部节点 实例崩溃的根本原因在于内存耗尽,导致大量线程持续处于等待状态,GC 无法自动回收内存,进而触发 JIT 编译器被禁用。系统随后抛出 java.lang.OutOfMemoryError: GC overhead limit exceeded
与 java.lang.OutOfMemoryError: Java heap space 错误,最终致使 OACORE_SERVER 核心服务无法正常提供响应。
2、 经数据库层面分析,本次 外部节点 崩溃并非由 SQL 语句直接引起,但数据库端仍存在一定性能瓶颈,主要体现在 USER I/O 与内存资源分配方面,建议重新规划并优化相关内存配置。
解决方案
调整 外部节点 的 OACORE_SERVER 内存参数,使其与 内部节点 环境保持一致。具体操作如下:
a) 登录 WebLogic 管理控制台;
b) 进入 Environment → Servers → oacore_server2 → Server Start;
c) 点击 Lock & Edit 以解锁配置;
d) 修改启动参数,将内存配置由 -XX:PermSize=128m -XX:MaxPermSize=384m -Xms1024m -Xmx1024m 调整为 -XX:PermSize=128m -XX:MaxPermSize=384m -Xms2048m -Xmx4096m。