weblogic out of space in CodeCache for adapters导致宕机

weblogic会莫名的宕机,宕机日志跟以往的不同:

Caused By: java.lang.VirtualMachineError: out of space in CodeCache for adapters

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)

at net.sf.jasperreports.engine.fill.JREvaluator.init(JREvaluator.java:88)

at net.sf.jasperreports.engine.fill.JRCalculator.init(JRCalculator.java:111)

at net.sf.jasperreports.engine.fill.JRFillDataset.initCalculator(JRFillDataset.java:469)

at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:529)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103)

at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61)

at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)

at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:55)

at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)

at com.gg.datareport.reportform.appservice.impl.JRService.getJasperPrint(JRService.java:1017)

at com.gg.datareport.reportform.appservice.impl.JRService.reportHTMLByTemplToResp(JRService.java:1123)

代码缓存区满,原因是第三方报表工具用到了groovy,动态生成了很多类,网络上解释为:

Code Cache用满一方面是因为空间可能不够用,另一方面是Code Cache是不会回收的,所以会累积的越来越多(其实在不采用groovy这种动态更新/装载class的情况下的话,是不会太多的),所以解法一可以是增大code cache的size,可通过在启动参数上增加-XX:ReservedCodeCacheSize=256m(Oracle JVM Team那边也是推荐把code cache调大的),二是启用code cache的回收机制,可通过在启动参数上增加:-XX:+UseCodeCacheFlushing来启用。

调整1:将现场的weblogic启动参数调整为:-XX:ReservedCodeCacheSize=1024m,宕机的频率下降,不过还是有宕机。

调整2:再加上参数-XX:+UseCodeCacheFlushing ,到目前为止很稳定。

总结:不过要解决根上的问题,还是要看下代码,检查哪里没有内存泄露的问题。这个第三方的报表工具是新加入的组件,新的东西会带来新的问题,所以问题诊断也要与时俱进。

时间: 2024-10-08 05:22:56

weblogic out of space in CodeCache for adapters导致宕机的相关文章

weblogic宕机crash问题解决分享

最近比较烦躁,系统频繁出现宕机,weblogic控制台打印出hs_error_pid****.log文件,打出crash报告. 错误内容如下,连续几天查询问题原因,系统如何优化都还出现crash原因. 最后得知这样可以解决,这个分享出来给大家,使同行们少走弯路,可以节省更多时间,知识共享. 出现此问题原因: 1.当前正在使用jar或者class文件被动态更新: 2.当前jar大于4G并且为JDK6或者更早版本:JDK6或者更早版本只能接受4G大小以下的版本. 问题解决: 1.在JDK的1.6.2

Weblogic魔法堂:AdminServer.lok被锁导致启动、关闭域失败

一.判断AdminServer.lok被其进程锁死 >weblogic.management.ManagementException: Unable to obtain lock on *******/AdminServer.lok. Server may already be running 由于Weblogic的域以单例形式存在,因此当执行startWeblogic.cmd或stopWeblogic.sh时出现上述信息,则表示该域已被启动或其他进程锁定了AdminServer.lok文件导致

mysql 5.6.34 突然宕机,启动不了,提示[ERROR] InnoDB: Space id in fsp header

一.问题描述 一台线上的从服务器,半夜收到报警短信提示异常,连接到该服务器,发现mysqld进程不在了,ps 查看,也没有查到.于是重启,但是重启失败,提示without pid file 于是查看errorlog,内容如下: 2017-09-22 03:37:42 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled 2017-09-

Linux索引节点(Inode:no space for device)用满导致的一次故障

问题描述 在storm测试环境集群上上nimbus和supervisor自动挂调,重启时显示no space for device,也不能创建,添加文件及目录,df -h查看 ilesystem Size Used Avail Use% Mounted on /dev/vda1 40G 2.9G 35G 8% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/vdc1 100G 3.1G 92G 4% /home /dev/vdd1 50G 180M 48G 1% /ho

理解Shared Pool 1

堆管理 shared pool是利用堆内存管理方式管理的(KGH:Kernel Generic Heap).从Oracle 9i开始,可以有多个最高级堆(TOP-LEVEL HEAP),最高级堆可以分为多个副堆,副堆下面还拥有下属副堆.堆和副堆的结构基本相同.从物理上来看,一个堆由于多个内存区以LINKED LIST的形式连接组成.一个内存区物理上使用一个GRANULE,一个内存区有多个CHUNK组成,所以CHUNK是HEAP的最小内存单位.CHUNK的使用情况可以通过X$KSMSP内部视图查看

在weblogic中打开gc日志开关并打印详细信息

在相应的domain目录下进入setDomainEnv.sh JAVA_OPTIONS="后面增加 sun jdk: ${JAVA_OPTIONS} -verbosegc -Xverboselog:/home/weblogic/bea/gc.`date +%Y%m%d_%H%M%S` IBM jdk ${JAVA_OPTIONS} -verbosegc -Xloggc:/home/weblogic/bea/gc.`date +%Y%m%d_%H%M%S` 故此,gc开关打开 每次showdown

2014-5-22 java.lang.OutOfMemoryError: Java heap space的一次诊断

收到消息某系统一个节点由于内存溢出而宕机,系统的中间件是weblogic,数据库的oracle. 1. 先用IBM  HeapAnalyzer分析内存溢出时的dump文件,找到占用内存最多的请求,然后看代码. 2. 在走查代码发现,此类中的方法都特别简单,对单表的增删改查,有查询的地方都是非常简单,不会有操作大数据的情况,这样就排除了数据库方面的问题. 3. 继续走查这个类,发现此类中初始化的时候就创建了16个类,这16个类中又创建了其他的类,揣测此次的内存溢出就是它产生的,需要证明. 4.用j

socket-详细分析No buffer space available(转)

新年上班第一天,突然遇到一个socket连接No buffer space available的问题,导致接口大面积调用(webservice,httpclient)失败的问题,重启服务器后又恢复了正常. 问题详情 具体异常栈信息如下: Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect at org.apache.axis.AxisFault

内网IP无法访问linux中weblogic的console控制台

今天用vm搭建weblogic服务器,可是主机却访问不了虚机的weblogic的console 非常郁闷. Weblogic12c 的默认IP是本地localhost, 默认端口为7001, 修改它们,需要进入Weblogic 9的安装目录下的{DOAMIN_HOME}\config\ 找到config.xml 即可,打开之后找到 1 <server> 2     <name>AdminServer</name> 3     <ssl> 4       &l