精华内容
下载资源
问答
  • WAS 内存溢出分析

    2018-12-04 20:43:16
    Websphere Application Server WAS 内存溢出分析,帮助分析内存问题
  • websphere 内存溢出 javacore分析工具jca456 分析javacore的好工具 分析javacore的好工具
  • WAS内存溢出处理方法

    千次阅读 2018-12-05 10:18:03
    有时内存溢出会导致WAS挂了,有时不会挂,会自动恢复。 如果WAS挂了,重启即可,不用额外操作收集信息。 后续分析日志: 下载native_stderr.log文件,在/was7/profiles/AppSrv01/logs/server1下,与SystemOut.log...

    出现的现象:生成heapdump文件,及javacore文件。且javacore中有明显OutOfMemory字样。有时内存溢出会导致WAS挂了,有时不会挂,会自动恢复。

    如果WAS挂了,重启即可,不用额外操作收集信息。

    后续分析日志:

    下载native_stderr.log文件,在/was7/profiles/AppSrv01/logs/server1下,与SystemOut.log同一目录,利用ga452.jar工具打开该文件,选择Used Tenured,

    1、如果出现以下情况,表明是由于长期的内存泄漏导致的,可以通过查看SystemErr.log相关报错信息,先解决这些报错信息,再进行观察。

    2、如果出现下面的图形表明是由于某个时刻某个线程异常申请内存空间导致的,需要查当前时间点的SystemOut.log日志。也需要结合当前时间点的SystemErr.log日志,整体分析当前时间点应用正在执行的操作。

    查看生成的javacore文件。找到当前线程

    Current Thread Details

    NULL           ----------------------

    3XMTHREADINFO      "WebContainer : 6" TID:0x0000000002540600, j9thread_t:0x00002AAABFA760E0, state:R, prio=5

    找到对应的线程号"WebContainer : 6"

    分析器中选择Thread Details 按钮,找到对应的线程,并查看详细对应的类和包抛出的异常,从而结合应用代码,分析导致问题的直接原因。

     

     

    利用ha446.jar工具打开heapdump文件。

    cmd运行 java –jar ha446.jar,如果heapdump比较大,可以增加启动参数,

    java –jar –Xms1024m –Xmx2048m ha446.jar  

    如下图:

    图表示当前JVM内存中对象情况分布图,有助于分析系统产生heapdump的原因。

     

    3、查看javacore文件,如果出现Java底层的包 xxx.so文件出现异常 ,可能是WAS本身的BUG,可以考虑升级WAS版本及WAS自带JDK的版本。

    如果是 xxx.so包是应用程序包,需要分析应用问题。

    4、建议常出现内存溢出的server配置上如下参数。该参数可以在native_stderr.log中生成超过20m的大对象的信息,便于后期分析。对性能影响不大。

     打开管理控制台, 点击 服务器 > 应用程序服务器 >server1, 点击 > java和进程管理> 进程定义 . 

    . 点击java虚拟机. 

    将-Xdump:stack:events=allocation,filter=#20m参数以空格相隔,添加到JVM通用参数一栏中,然后点击确定并保存. 

    如果需要手动生产dump文件 JVM通用参数中设置:-Xdump:java+heap:events=user 

    工具请自行上网下载。

    展开全文
  • WAS 内存溢出(OutofMemory)问题分析常用方法 简述 OOM(内存溢出): 内存溢出是指在应用系统中存在无法回收的内存或内存使用的过多,最终导致应用程序无法为新的对象分配内存空间,这时JAVA运行时 会抛出一个 ...
    WAS 内存溢出(OutofMemory)问题分析常用方法

    简述 OOM(内存溢出):

    内存溢出是指在应用系统中存在无法回收的内存或内存使用的过多,最终导致应用程序无法为新的对象分配内存空间,这时JAVA运行时会抛出一个 OutOfMemoryError 的异

    常,简称 OOM。


    简述 Java堆(Java Heap):

    JVM 内存从逻辑上来说分为多个空间,Java堆是 JVM 所管理的内存空间中最大的一块。我们可以通过 JVM 启动参数 -Xms、-Xmx 来设定它的大小。GC 工作的主要区域也是

    在这里,因为基本上所有的对象实例的内存都是在这里分配的。


    简述 GC (垃圾收集器):

    在 JVM 中,内存的释放是由垃圾收集器(GarbageCollection,GC)完成的,当一个对象不再被引用的时候,GC 便回收它所占用的内存空间。

    -----------------------------------

    触发内存溢出的可能原因:

    1、集合类中(List、MAP)有对对象的引用,使用完后未清空

    2、内存一次性加载的数据量过多

    3、内存产生大量碎片,没有连续可用空间

    4、代码中存在死循环或递归调用

    5、JVM 启动参数内存值设定的过小

    6、系统物理内存过小

    -----------------------------------
    在分析问题时,我们需要收集以下日志:

    GC日志:native_stderr.log  (在 JVM 启动参数中加入 -verbose:gc 打开详细垃圾回收)

           通过 GC 日志native_stderr.log查看垃圾回收情况

    应用系统日志:SystemOut.log

           查看具体错误信息


    线程转储:javacore

           通过 heapdump 分析可疑泄漏对象


    堆转储:heapdump

           通过 javacore 分析线程执行状态


    ------------------------------------

    生成javacore和heapdump,可以多次收集,然后通过工具比较分析,这样更容易发现问题

    [root@was01 bin]# ./wsadmin.sh -user wasadmin -password password
    设置jvm环境变量
    wsadmin>set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]    
    生成javacore文件:
    wsadmin>$AdminControl invoke $jvm dumpThreads
    找到JVM对象名字
    wsadmin>set objectName [$AdminControl queryNames type=JVM,process=server1,*]
    生成heapdump文件:
    wsadmin>$AdminControl invoke $objectName generateHeapDump
    ------------------------------------

    在 WAS 中,我们可以尝试以下方法,缓解内存溢出问题,具体方法请根据实际情况判断:

    1、更改垃圾回收算法

    2、优化 JVM 启动参数

    3、增加 JVM 内存大小要想更好的解决 java.lang.OutOfMemoryError 的问题,我们需要从应用程序入手,因为优化程序带来的性能改善远远高于对 WAS 的调试。

    -----------------------------------------

    以下是对内存泄漏的几种分类:(摘抄自网络)

    1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

    2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。

    3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块且仅有一块内存发生泄漏。

    4. 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

    展开全文
  • 原标题:让人头疼的WAS内存溢出,银行运维人员该如何优雅的解决 1 引言WAS(IBM WebSphere Application Server)是IBM发布的一款成熟的企业级Web中间件产品,凭借其可靠性与稳定性,一直是国内大型商业银行Web服务的...

    原标题:让人头疼的WAS内存溢出,银行运维人员该如何优雅的解决

    1 引言

    WAS(IBM WebSphere Application Server)是IBM发布的一款成熟的企业级Web中间件产品,凭借其可靠性与稳定性,一直是国内大型商业银行Web服务的主流选择。可再稳定也会出问题,在日常的生产运维中,WAS应用问题的排查确实让笔者这种银行运维人员头疼。一方面厂商提供技术支持的时效性与准确性有待改善,另一方面像IBM其他产品一样,网上开放的可参考和借鉴的资料太少,发生WAS问题时着实让人无从下手。不过不要紧,鲁迅先生曾经说过,“走的人多了,自然就有路了”,笔者作为具有多年WAS运维经验的老鸟,下面就把自己在应对WAS内存溢出方面的知识总结一下,为大家介绍一下如何优雅的应对WAS内存溢出。

    2 IBM JAVA内存管理

    要应对WAS内存溢出,必须对IBM对JAVA内存的管理有所了解,下面,笔者就简单介绍一下IBM是如何管理JAVA内存的。不同于大家经常使用的Oracle Java,WAS使用的JAVA是内置于WAS内部的IBM JAVA,与Oracle Java在JVM、配置参数等方面有着显著不同。

    IBM JAVA 同样包含JDK、JRE、JVM三层,其关系如图所示:

    图1 JDK、JRE、JVM关系

    JVM内存管理区域包括程序计数器、Java虚拟机栈、堆空间、方法区、运行时常量池、本地方法栈(The Java® Virtual Machine Specification Java SE 8 Edition定义的内存区域)。以上几个内存区域中,除程序计数器区域外,都可能会产生OutOfMemoryError错误(本文中内存溢出特指Java的“OutOfMemoryError”)。

    图2 JVM 运行时内存区域

    程序计数器区域

    Java虚拟机支持多线程运行,所以对于每个线程,都需要一个指示其运行程序位置的指针,这个指针指向当前程序运行方法的地址。

    Java虚拟机栈

    每一个Java线程都拥有一个私有的Java虚拟机栈。像其他传统语言一样,Java虚拟机栈保存了程序调用时的局部变量和部分结果(称之为Frame)。

    方法区、运行时常量池

    方法区存放运行时常量池、字段以及方法(包括构造方法、特殊方法)代码。在IBM Java 8版本中,所有加载的类都存放在称之为Metaspace的空间中,Metaspace使用操作系统本地内存空间。

    本地方法区域

    为了支持操作系统本地方法(如C语言)调用,虚拟机中在本地方法区域中存储本地方法调用的栈信息。

    堆空间

    堆是JVM运行时内存中最大的区域,也是和程序开发密切相关区域,所有的对象实例(包括基本类型)、数组都存放在这个区域。和传统的C、C++语言不同,Java语言不需要开发人员显式地进行内存的申请和释放,而是由JVM的Allocator(内存分配器)和Garbage Collection(内存垃圾回收器,简称GC)负责管理内存。我们最常见的内存溢出“java.lang.OutOfMemoryError : Java heap space”也主要和该区域有关。下面我们将着重阐述IBM J9 VM堆空间相关模型和垃圾回收策略。

    堆空间内存结构和垃圾回收策略(GC)

    J9 VM支持多种不同的GC策略,不同的GC策略对应不同的Heap内存模型及分配回收算法,不同的GC策略适应于不同的业务场景,对于大多数系统(特别是交易类系统)来说,可使用“Generational Concurrent Garbage Collector”策略(简称gencon,参数:-Xgcpolicy:gencon可以指定使用该策略),这也是J9 VM的默认GC策略,本文主要详细介绍该策略。

    “Generational Concurrent Garbage Collector”策略特别适合存在非常多短生命周期对象的应用,即对象申请完之后,很快就不被使用,可以被GC回收。而一般的交易类系统,都符合这种场景。

    在该策略下,Heap内存被划分成新区域(Nursery)、老区域(Tenured)。所有对象创建后都被分配到Nursery区域,之后如果该对象一直标记为可用,则会被自动到Tenured区域。

    图3 J9 VM 默认堆空间内存模型

    更进一步,可以将Nursery区域划分为Allocate空间、Survivor空间。新创建的对象一开始被分配到Allocate空间,当Allocate空间满之后,触发一次Local GC,由Scavenge 进程将Allocate空间中“活着的”对象拷贝到Survivor区,超过一定周期(Tenured age)的对象则直接被移动到Tenured区域。之后,Allocate空间、Survivor空间的角色互换,等待下次Local GC。

    图4 Local GC过程

    上文提到,在一般场景下,大部分对象创建后,很快就不被使用、存活的对象较少,所以Local GC移动的数据也很少,而且Local GC后,可以得到很大的Allocate空间,这样就减小了GC时间。在JVM中,GC意味着所有运行中线程都要停下来(Pause)等待GC结束,GC完成后,才可以继续运行,所以Local GC可以减少因GC带来的系统吞吐量下降的影响。

    发生堆空间分配失败或者调用System.gc方法后,触发Global GC过程。Global GC通过标记、清除、压缩过程来尽可能释放JVM内存空间。Global GC需要获得整个JVM的排他控制权,所以当进行Global GC时,所有应用线程也将暂停。当Global GC结束后,应用线程将恢复执行。

    3 常见的WAS内存溢出原因

    上面我们介绍了IBM Java内存管理的模型和策略。理解上述模型后,我们可以清楚的知道为何会发生内存溢出:

    (1)JVM内部或者JVM间接使用的操作系统内存分配失败后触发内存溢出报错。JVM内存区域中,除了程序计数器区域外,Java虚拟机栈、堆空间、方法区、运行时常量池、本地方法栈都可能会发生内存溢出报错。

    (2)对于堆空间,当堆空间已经尽可能扩展,并且JVM花费了95%以上的时间在GC时,也会触发内存溢出报错。

    以上两点是内存溢出的基本要点,但实际生产系统由于运行环境往往较为复杂,在处理实际问题时,我们还应结合环境配置和业务场景来分析。通过总结实际运维过程中经验,可以将内存溢出原因分为如下几类:

    (1)堆内存大小上限配置过低

    由于Java程序所能使用的堆空间上限完全取决于JVM启动时的参数配置,当堆空间上限参数设置过低,即使操作系统物理内存空闲较多,应用程序也无法使用。所以在问题排查时,我们首先应该明确系统配置的堆空间上限(由Xmx参数指定),一般不能使用堆大小上限默认值。

    (2)程序内存泄漏导致内存持续增长

    如果程序存在内存泄漏,即使已经不再使用的内存仍将无法被GC回收释放,JVM内存将持续增长(而且,由于内存使用率逐渐升高,将会更加频繁的触发GC,反复GC又会引发CPU过高),最终导致堆内存空间满而引发内存溢出。

    (3)数据查询交易返回记录数过多或者程序申请使用大内存对象

    当程序过度地使用内存大对象或数组,导致无法申请足够的内存空间而引发内存溢出。例如,在实际生产中,可能存在应用程序读取整表数据或情况(数据条数在几万条以上),极易引发内存溢出。

    (4)物理内存过低或因其他进程消耗过多内存引发内存溢出

    即使我们设定了合理的JVM内存空间大小上限,但也有可能因为本地操作系统本身可用内存过低、无法实现内存空间的动态扩充,进而导致内存溢出;也可能因为在同一个操作系统上运行的其他JVM或者本地进程使用过多的内存导致内存溢出;由于JVM的部分区域(如Metaspace、DirectMemory等)直接使用的是操作系统内存,所以当操作系统内存过低,但创建本地线程过多、加载类过多时也有可能发生内存溢出异常;当程序过度使用DirectMemory也会引发内存溢出。

    (5)交易量突然增大

    如果我们将JVM堆内存上限设为M,每支交易处理需要使用的堆内存是N,那么当同时处理的交易量X突然增多N*X>M时,就容易触发内存溢出。

    4 如何优雅的应对WAS内存溢出

    当发生内存溢出后,首先要做的是恢复生产,恢复因内存溢出而宕机的Server。恢复生产后,可按照下面步骤进行内存溢出原因分析。

    收集环境信息

    内存溢出分析首先要做的就是收集环境信息和日志信息。

    收集日志文件

    表 1 收集日志文件表

    分析应用日志

    查看SystemOut.log日志java.lang.OutOfMemoryError的提示信息,确定内存溢出发生在JVM的哪个区域之后,查看SystemOut.log、SystemErr.log中应用交易日志,分析是否可疑的异常交易。

    分析堆内存使用趋势

    一般内存分析,第一步先查看JVM内存使用情况,即通过“IBM Pattern Modeling and Analysis Tool for Java Garbage Collector”工具,打开native_stderr.log文件,查看JVM堆空间内存使用曲线:

    对于大对象或数组使用导致内存溢出的曲线一般如下图所示,存在曲线突然升高的情况:

    图5 大对象内存溢出堆空间趋势图

    内存泄漏导致内存溢出的曲线一般如下图所示,曲线缓慢上升(红色曲线):

    图6 内存泄漏程序堆空间趋势图

    找到堆空间可疑内存溢出点

    使用IBM HeapAnalyzer工具分析Heapdump文件。HeapAnalyzer工具列出了可疑的内存溢出点,分析人员需要逐个对这些可疑点进行排查,结合程序代码进行进一步确认。

    分析线程现场信息

    使用“IBM Thread and Monitor Dump Analyzer for Java”工具,分析javacore文件。检查内存溢出时正在执行的交易、正在执行的方法。

    非堆空间内存溢出

    如果出现“java.lang.OutOfMemoryError: 本机内存耗尽”内存溢出报错,则需要考虑DirectByteBuffer内存区域引发内存溢出。

    5 如何在具体场景应用

    上面白话了那么多,想必各位已经头晕眼花,那么接下来就来点干货。在具体的运维场景中,银行运维人员该如何快速分析和定位WAS内存溢出的问题呢,让笔者来结合自己遇到的某个实际场景进行阐述。

    某次笔者正在优雅的喝着咖啡,写着工作总结,忽然接到监控告警通知,“XX管理系统交易超时率提高,请尽快处置”。笔者一阵激灵,赶快扔下咖啡跑进操作间开始排查系统问题。

    第一步,当然是尽快恢复生产喽,笔者排查时,通过监控发现某台WAS服务器内存直冲天际,隐隐有突破内存限制的隐患,而就在同时,交易超时的情况开始同时升高。基本已经能定位问题是由于内存原因导致的,那么为了尽快恢复生产,笔者当然是首先选择对故障服务器的WAS应用进行了重启。

    图7:发生问题时某台WAS服务器的内存监控情况

    第二步,重启大法果然不出意外的解决了问题,重启WAS应用后系统交易超时指标恢复了正常。接下来,笔者就要认真排查问题,到底是什么导致了这次内存意外的冲高呢。笔者开始着手采集分析文件,主要包括SystemOut.log(输出日志)、SystemErr.log(错误日志)、native_stderr.log(GC日志),在采集时,笔者还在日志目录中发现了Javacore文件与Heapdump文件,这已经能确认是发生了内存溢出,下面的问题就是分析原因了。

    第三步,首先我们来查看日志文件,下面分别是SystemOut.log和SystemErr.log的部分内容。果然,在问题时点附近的错误日志中看到了OutOfMemoryError,同时在应用日志中看到了一些正在执行的sql,那么到底是哪个程序在作怪,又是为什么产生了内存溢出呢。

    图8:问题时点的应用日志

    图9:问题时点的错误日志

    第四步,看来仅从日志是无法定位具体问题的,笔者接下来要运用工具来解决问题了。笔者先后用IBM HeapAnalyzer和IBM Thread and Monitor Dump Analyzer for Java工具,分别对Heapdump文件及Javacore文件进行了具体的分析。对Heapdump文件的解析结果显示,某个List居然存在68万多个对象,占用了近50%的内存空间。对Javacore文件的分析结果显示,发生溢出时某支交易线程一直处于等待状态。

    图10:Heapdump文件的分析结果

    图11:Heapdump文件的分析结果

    第五步,有了这么丰富的信息,笔者已经做出了基本的判断,本次WAS内存溢出应该是由于某线程在一次查询时获取了太多数据,导致JVM为装载这些数据的List对象分配了过多内存,从而导致的内存溢出。笔者将信息反馈给开发人员后,果然没多久就得到确认,确实是某条查询语句未对查询结果进行分页处理,一次性命中过多查询结果后将其全部装入内存导致。

    至此,笔者的这次应急处置与事件分析工作告了一段落,笔者心满意足的回到工位,继续开始喝咖啡,写总结,优雅的等待下班的到来,相信开发人员修复这个隐藏缺陷后,笔者又可以清净一段时间了。

    6 如何预防或解决内存溢出问题

    经过上面一番讲解,相信对于WAS内存溢出的分析,无论是理论还是实践大家都有了一定的认识,那么,我们如何能预防或避免这种问题呢。笔者进行了一些简答的总结。

    对于物理内存不足或者堆空间上限配置不足的情况,需要评估合适的物理内存或者堆空间上限大小,进行扩充。需要注意的是32位WAS最大堆内存上限为1536MB,如果需要升级到更大内存,则需要迁移到64位WAS平台。另外,堆内存空间并不是越大越好,越大的内存意味着GC管理也越复杂,GC的耗时及应用程序停顿的时间也越长。

    对于存在内存泄漏或者是大对象申请情况引发的内存溢出,一般需要在定位问题原因后,在测试环境复现问题,进行程序优化解决问题。程序优化的方法不一而足,例如存在大数据量数据查询的情况可以加入筛选条件或者增加分页处理;也可以暂时规避解决的方式,通过关闭发生问题的交易或者修改交易流程不触发内存溢出的场景来临时性解决问题。

    7 最后

    以上就是笔者总结的如何优雅的应对WAS内存溢出的全部内容了,WAS作为一款企业级Web中间件,至少目前在国内银行、证券等大型国企中还占据着主导地位,了解WAS知识有助于我们在生产运维过程中高效解决问题,提高应急处置效率,后续笔者会继续总结在日常运维过程中碰到的问题,跟大家共同分享和交流。

    作者单位:中国农业银行研发中心 栾勇 耿鹏返回搜狐,查看更多

    责任编辑:

    展开全文
  • 3、初步分析可能是座席系统代码问题,数据库连接池或事物未提交导致堆内存满,但将座席系统代码全部检查,发现有2个Service调用数据库操作,但是未加入事物控制。 UserInfoServiceImpl.getCurrentUserInfo(); ...

    座席系统应用故障问题分析如下

    一、数据库配置信息

    1、DB2数据库连接数计算规则 "maxappls * maxlocks &gt= 100"

    当前呼叫中心DB2数据库cfg配置信息如下

    (MAXLOCKS) = AUTOMATIC(98)

    (MAXAPPLS) = AUTOMATIC(147)

    修改DB2连接数 db2 update db cfg for sdnxcsr using MAXAPPLS 149

    查看DB2连接数 db2 list applications

    2、数据库APPLHEAPSZ

    db2 get db cfg for sdnxcsr|grep "Default application heap"

    Default application heap (4KB) (APPLHEAPSZ) = 4096

    二、WAS连接池配置信息

    WAS连接池配置信息如下

    连接超时:180 秒

    最大连接数:80

    最小连接数:10

    收集时间:180秒

    未使用的超时:1800秒

    时效超时:0秒

    清除策略:整个池

    三错误信息定位过程

    1、查看分析以下日志信息

    ../profiles/Appsrv01/logs/server下主要日志:

    SystemErr.log 系统出错日志

    SystemOut.log 系统中所有活动的日志

    trace.log 系统中所有跟踪的事件的日志

    startServer.log 启动服务器事件的日志

    stopServer.log 停止服务器事件的日志

    native_stderr.log Gc垃圾收集日志

    IBM Http Server(IHS)与Plugin日志信息: httpserver/../logs下相关日志如果有相关was抛错等首先查看以上日志文件。

    2、5/30/13日志信息提示Not enough storage is available in the application heap to process the statement.. SQLCODE=-954, SQLSTATE=57011, DRIVER=3.62.56

    意思是DB2的 堆(APPLHEAPSZ)大小不足、或表空间已满。查看数据库配置信息发现(APPLHEAPSZ) = 4096已经很大、表空间更不可能满(表空间有监控达到70%报警)

    断定此报错信息属于表面现象。

    3、初步分析可能是座席系统代码问题,数据库连接池或事物未提交导致堆内存满,但将座席系统代码全部检查,发现有2个Service调用数据库操作,但是未加入事物控制。

    UserInfoServiceImpl.getCurrentUserInfo();

    UserServiceImpl.resetPassword();

    4、继续分析日志发现自5/29/13 20左右的时候也有类似信息,发现出现SQLCODE=-954, SQLSTATE=57011错误前系统已经有提示信息

    [5/29/13 20:35:49:870 GMT+08:00] 0000002b FFDCJanitor I com.ibm.ws.ffdc.impl.FFDCJanitor doCleanupIfNeeded FFDCJANITOR_DELETED_FILES

    [5/29/13 20:35:49:897 GMT+08:00] 0000002b FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /opt/IBM/WebSphere/AppServer/profiles/Custom01/logs/ffdc/csrserver21_33153315_13.05.29_20.35.49.88243535.txt com.ibm.ws.rsadapter.jdbc.WSJccPreparedStatement.pmiExecuteQuery 738

    [5/29/13 20:35:49:929 GMT+08:00] 0000002b FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on /opt/IBM/WebSphere/AppServer/profiles/Custom01/logs/ffdc/csrserver21_33153315_13.05.29_20.35.49.91143536.txt com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery 371

    经分网上查找相关资料析发现com.ibm.ws.ffdc.impl.FFDCJanitor doCleanupIfNeede

    展开全文
  • 一、java.lang.... 他们在碰到WAS跑起来很慢的时候,就会考虑到WAS内存不够用。从而在增加内存后,盲目设置WAS的Java虚拟机初始堆大小和最大堆大小。 以前我见过的一个烟草的项目就是这样。 服务器有8G的内存
  • 1 引言WAS(IBM WebSphere Application Server)是IBM发布的一款成熟的企业级Web中间件产品,凭借其可靠性与稳定性,一直是国内大型商业银行Web服务的主流选择。可再稳定也会出问题,在日常的生产运维中,WAS应用问题...
  • 1 引言WAS(IBM WebSphere Application Server)是IBM发布的一款成熟的企业级Web中间件产品,凭借其可靠性与稳定性,一直是国内大型商业银行Web服务的主流选择。可再稳定也会出问题,在日常的生产运维中,WAS应用问题...
  • Detail "java/lang/OutOfMemoryError" "本机内存耗尽" received 1TIDATETIME Date: 2014/01/15 at 11:21:54 1TIFILENAME Javacore filename: d:\IBM\WebSphere\AppServer\profiles\AppSrv02\javacore.20140115....
  • 本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8)。修改虚拟机启动参数这里我们使用的是IDEA集成开发环境,选择Run/Debug Configurations然后选择Configuration,修改VM options配置,就可以...
  • 该文档整合了网上所有的关于描述was(webSphere)下生成许多phd文件的...产生该类文件的原因包括JVM设置的最小内存太小,以至于内存溢出,还有就是程序漏洞,使得JVM内存溢出,文档中叶介绍了websphere的检测工具的使用
  • WAS 中JAVA内存溢出的解决方法

    万次阅读 2014-06-06 11:45:23
    内存溢出是使用WAS时会经常遇到的问题。 1.现在WAS的控制台上打开详细垃圾回收。一旦出现OOM的错误时,会在nativeerr.log中有记录,也可以从这个日志中看出内存分配的情况。 解决方法: 首先查看systemerr.log...
  • 唯一一个java虚拟机规范中没有规定任何OutOfMemoryError情况的区域Java虚拟机栈线程私有,生命周期和线程相同虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧用于存储局部变量表、操作...
  • power 7 安装was6.1有内存溢出文件   安装之前需要执行:export JAVA_COMPILER=NONE
  • 项目中碰到Websphere内存溢出的情况。原因可能:出现过多内存泄漏,或者分配过多大内存等。解决方法:1、进入was管理控制台,选择 应用程序服务器 > server1 > 进程定义 > Java 虚拟机,将"最大堆大小"改为...
  • 将一个在tomcat上运行正常的项目放到websphere中,通过war包的方式进行部署,使用was的dmgr管理台进行上传war时,会在上传界面卡死,找了好久也没有找到问题的所在,最后在,发现了该问题是was的dmgr内存溢出。...
  • "OUTOFMEMORY内存溢出"F000043/.._/erp/ts/jsp/tsjj008E2.jsp_1_17-2-8 .H10:02"Java heap critical shortage 0.18637797 % free [星期三 二月 8 10:02:20 2017]Complete Java heap exhaustion. 4,112 bytes ...
  • 这个内存溢出跟server的jvm有关系吗?尝试调整过,没起作用。报错日志如下:[2/24/16 6:46:14:285 CST] 00000029 AlarmImpl W DCSV0002W: DCS Stack at Member : An unexpected internal programming state has ...
  • websphere内存溢出

    千次阅读 2011-07-25 12:03:48
    最开始我们的业务系统最大的问题就是内存溢出一般来说溢出分2种,一种是heap堆溢出,一种是本地native溢出但对于WAS来说,大部分都是heap堆溢出,这个跟IBM JDK的实现有关(IBM的比较另类)堆溢出也分为大对象,内存...
  • 本例WAS7版本,8.0版本可以直接调整参数。 部署应用程序使用的是WAS中的java的jar工具,部署过程中,也会使用到单独的一个JVM堆,调用的脚本为在AppServer/eploytool/itp/ejbdeploy.sh文件。 修改AppServer/...
  • "OUTOFMEMORY内存溢出"F000043/.._/erp/ts/jsp/tsjj008E2.jsp_1_17-2-8 .H10:02"Java heap critical shortage 0.18637797 % free [星期三 二月 8 10:02:20 2017]Complete Java heap exhaustion. 4,112 bytes ...
  • 项目中碰到Websphere内存溢出的情况。原因可能:出现过多内存泄漏,或者分配过多大内存等。解决方法:1、进入was管理控制台,选择 应用程序服务器 > server1 > 进程定义 > Java 虚拟机,将"最大堆大小"改为...
  • 内存溢出解决

    2019-08-12 11:13:41
    -Xms2048m -Xmx4096m Xms 初始堆大小 Xmx 最大堆大小 给了我个提示: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option ... support was removed in 8.0 Java HotSpot(TM) 64-Bit Server VM warni...
  • Tomcat配置 内存溢出

    2012-06-17 11:46:59
    目录1....... 目的... 32....... 问题... 42.1.Tomcat启动错误:Nativelibrary was not found....安装版内存溢出解决方案... 52.5.解压版内存溢出解决方案... 53....... 总结... 61.目的文档记录使用T...
  • 原文:... 1:服务器-->服务器类型-->WebSphereApplicationServer ... 3:如果是was7的话  服务器基础机构-->管理-->定制属性  如果的was6的话  java进程和管理-->...
  • 网上有很多方法,ibm官方也提供了。但是,好奇怪,好像只有百度博客的一片文章提出要先设置环境条目或定制属性,否则命令不生效。 我测试了很多种方法,只有一种生效。...3:如果是was7的话  服务器基础机构--&...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

was内存溢出