Weblogic内存溢出及JDK选用中间件应用服务器
weblogic内存溢出

WEBLOGIC 内存溢出解决方案相关教程:很好听听听吧朱禹齐(原创)正文f-tuning)' has been busy for"697" seconds working on the request "Ht tp Request: aaa.do", which is more than the configured time (StuckThr eadMaxTime) of "600" seconds. Stack trace:后来在公司文档中发现以前所有weblogic的部署使用的JDK都是Sun的,于是没有进行具体的分析就进行了更换。
今天客户报告系统反应极慢,查看后台发现包内存溢出异常,导致整个系统没有反应,于是进行了重启才恢复。
------------------------------------------------------------------------以下内容转自其他Blog------------------------------------------------------------------------场景:用户培训需要培训环境,培训环境搭好后,由于不常更新跑的时间较长,考验系统稳定性的时候到了,很可惜稳定性这个问题与我们大家的美好愿望一直背道而驰,天天求神拜佛也不行很不给面子,发现了一个原因解决了又出现了其他引起当机的因素,弄得是焦头烂额,下面就是我们发现的一个引起当机的原因,请各位提高警惕。
9月16日系统当机,Weblogic报出ng.OutOfMemoryError: PermGen space 异常,10-15分钟后就会发生<[STUCK] ExecuteThread: '2'for queue: 'weblogic.kernel.Default (self -tuning)'> <<WLS Kernel>> <> <> <1221538218253> <BEA-000339> <[STUCK] ExecuteThread: '2'for queue: 'weblogic.kernel.Default (self-tuning)排查分析:1、参考tomcatFAQ: /tomcat/FAQ/Deployment中如下内容:Why does the memory usage increase when I redeploy a web application?Because the Classloader (and the Class objects it loaded) cannot be r ecycled. They are stored in the permanent heap generation by the JVM, and when you redepoy a new class loader is created, which loads anot her copy of all these classes. This can cause OufOfMemoryErrors event ually.Tomcat FAQ指出SUN JVM对处于permanent heap generation(默认4M)的内容不做垃圾回收会导致内存溢出错误。
java内存溢出排查方法解析

java内存溢出排查方法解析内存溢出(out of mem or y),通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。
此时软件或游戏就运行不了,系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件或游戏一段时间。
内存溢出已经是软件开发历史上存在了近40年的“老大难”问题,像在“红色代码”病毒事件中表现的那样,它已经成为黑客攻击企业网络的“罪魁祸首”。
如在一个域中输入的数据超过了它的要求就会引发数据溢出问题,多余的数据就可以作为指令在计算机上运行。
据有关安全小组称,操作系统中超过50%的安全漏洞都是由内存溢出引起的,其中大多数与微软的技术有关。
定义及原因内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。
为了解决Java中内存溢出问题,我们首先必须了解Java是如何管理内存的。
Java的内存管理就是对象的分配和释放问题。
在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(GarbageCollec ti on,GC)完成的,程序员不需要通过调用GC函数来释放内存,因为不同的JVM实现者可能使用不同的算法管理GC,有的是内存使用到达一定程度时,GC才开始工作,也有定时执行的,有的是中断式执行GC。
但GC只能回收无用并且不再被其它对象引用的那些对象所占用的空间。
Java的内存垃圾回收机制是从程序的主要运行对象开始检查引用链,当遍历一遍后发现没有被引用的孤立对象就作为垃圾回收。
1、内存溢出的原因是什么?内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出。
如果出现这种现象可行代码排查:一)是否App中的类中和引用变量过多使用了Stat ic修饰如publicst ai tc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。
JDK和weblogic安装配置

Linux平台下JDK和Weblogic安装配置第一步:下载软件和工具1.下载JDK安装包,jdk-6u45-linux-x64.bin;2.下载Weblogic 10.3的jar包,server103_generic.jar 。
3.说明:上述软件以及发布过程中可能会用到的工具已经下载好了,放在root/soft(如果没有soft目录可以新建,本文安装软件包都放在soft文件夹下)目录下。
第二步:安装JDK将上述软件通过ftp客户端上传到linux服务器的/soft目录下。
安装JDK 版本为jdk-6u45-linux-x64.bin1.切换到/soft目录下。
命令:# cd /soft2.将JDK安装程序复制到/usr/java目录下。
命令:# cp jdk-6u45-linux-x64.bin /usr/ local3.切换到/usr/java目录下。
命令:# cd /usr/ local4.给JDK安装程序授权。
命令:chmod u+x jdk-6u45-linux-x64.bin5.安装JDK。
命令:./jdk-6u45-linux-x64.bin6.在安装过程中,可以按空格键阅读说明,最后会提示是否接受相关协议,输入yes,回车,继续安装。
7.提示JDK安装完成,按回车退出安装,JDK安装完成。
第三步:配置JDK环境变量1.打开profile文件,命令:# vi /etc/profile回车键2.编辑profile文件按键盘字母“i”进入插入模式。
在profile文件的最后一行中插入以下代码:JAVA_HOME=/usr/local/jdk1.6.0_45PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export JAVA_HOME PATH CLASSPATH3.保存退出:插入完成后按“ESC”健,然后按住键盘shift的同时,按一下键盘<;>键,输入wq保存退出。
中间件运维服务

中间件运维服务1 中间件的服务内容1.1 服务目标行天科技可提供的运行维护服务包括,信息系统相关的主机设备、操作系统、数据库和存储设备的运行维护服务,保证用户现有的信息系统的正常运行,降低整体管理成本,提高网络信息系统的整体服务水平。
同时根据日常维护的数据和记录,提供用户信息系统的整体建设规划和建议,更好的为用户的信息化发展提供有力的保障。
用户信息系统的组成主要可分为两类:硬件设备和软件系统。
硬件设备包括网络设备、安全设备、主机设备、存储设备等;软件设备可分为操作系统软件、典型应用软件(如:数据库软件、中间件软件等)、业务应用软件等。
行天科技通过运行维护服务的有效管理来提升用户信息系统的服务效率,协调各业务应用系统的内部运作,改善网络信息系统部门与业务部门的沟通,提高服务质量。
结合用户现有的环境、组织结构、IT 资源和管理流程的特点,从流程、人员和技术三方面来规划用户的网络信息系统的结构。
将用户的运行目标、业务需求与IT 服务的相协调一致。
行天科技提供的信息系统服务的目标是,对用户现有的信息系统基础资源进行监控和管理,及时掌握网络信息系统资源现状和配置信息,反映信息系统资源的可用性情况和健康状况,创建一个可知可控的IT 环境,从而保证用户信息系统的各类业务应用系统的可靠、高效、持续、安全运行。
服务项目范围覆盖的信息系统资源以下方面的关键状态及参数指标:运行状态、故障情况配置信息可用性情况及健康状况性能指标1.2 中间件运维服务中间件管理是指对BEA Weblogic 、MQ 等中间件的日常维护管理和监控工作,提高对中间件平台事件的分析解决能力,确保中间件平台持续稳定运行。
中间件监控指标包括配置信息管理、故障监控、性能监控。
执行线程:监控WebLogic 配置执行线程的空闲数量。
JVM 内存:JVM 内存曲线正常,能够及时的进行内存空间回收。
JDBC 连接池:连接池的初始容量和最大容量应该设置为相等,并且至少等于执行线程的数量,以避免在运行过程中创建数据库连接所带来的性能消耗。
Java内存溢出的原因和解决方法

Java内存溢出的原因和解决⽅法你是否遇到过Java应⽤程序卡顿或突然崩溃的情况?您可能遇到过Java内存泄漏。
在本⽂中,我们将深⼊研究Java内存泄漏的确切原因,并推荐⼀些最好的⼯具来防⽌内存泄漏发⽣。
什么是JAVA内存泄漏?简单地说,Java内存泄漏是指对象不再被应⽤程序使⽤,⽽是在⼯作内存中处于活动状态。
在Java和⼤多数其他编程语⾔中,垃圾收集器的任务是删除不再被应⽤程序引⽤的对象。
如果不选中,这些对象将继续消耗系统内存,并最终导致崩溃。
有时java内存泄漏崩溃不会输出错误,但通常错误会以ng.OutOfMemoryErrorJAVA内存泄漏的原因是什么?当未被引⽤的对象被归类为引⽤对象时,就会导致Java内存泄漏。
这会阻⽌垃圾回收器清除内存,导致内存最终耗尽并崩溃。
在内存中,对象可以有两种状态,未引⽤和已引⽤。
被引⽤的对象仍然具有到Java应⽤程序的活动连接,⽽未被引⽤的对象则没有。
垃圾回收器的任务是查找和标识未引⽤的对象并将其删除。
垃圾回收器不会清理似乎被引⽤或正在使⽤的对象。
Java内存泄漏发⽣在未引⽤的对象重叠时,这些对象似乎仍在使⽤中。
我怎么知道是否有内存泄漏?有⼏种⽅法可以检查你的代码,看看它是否发⽣了内存泄漏。
识别泄漏的最简单⽅法是查找ng.OutOfMemoryError错误⽇志中的事件。
如果列出了此事件,您将能够提取有关Java的哪些部分导致了这种情况的进⼀步详细信息。
您经常会发现有关Java堆空间的详细信息。
这可能意味着内存泄漏,资源⽆法分配,或者堆⼤⼩设置得太低。
通常也会发现标记为PermGen空间的错误。
在⼤多数情况下,这不是内存泄漏,⽽是需要扩展的分配空间。
永久⽣成空间⽤于存储类对象,如果不扩展,则可以填充。
并不是所有的Java内存泄漏都是相同的,有些漏洞可以⽐其他漏洞更容易预防。
让我们来看看Java内存泄漏的⼀些最常见的原因。
如何防⽌JAVA内存泄漏最常见的内存泄漏类型之⼀是Java中的对象随着时间的推移⽽创建,但从未释放。
Weblogic详解

Weblogic详解⼀、简介WebLogic是美国公司出品的⼀个application server,确切的说是⼀个基于JAVAEE的中间件,WebLogic是⽤于开发、集成、部署和管理⼤型分布式Web应⽤、⽹络应⽤和应⽤的应⽤服务器。
将Java的动态功能和Enterprise标准的安全性引⼊⼤型⽹络应⽤的开发、集成、部署和管理之中。
WebLogic是美商的主要产品之⼀,系并购BEA得来。
是商业市场上主要的Java(J2EE)应⽤服务器软件(application server)之⼀,是世界上第⼀个成功商业化的J2EE应⽤服务器, 已推出到12c(12.1.3) 版。
⽽此产品也延伸出WebLogic Portal,WebLogic Integration等企业⽤的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发⼯具。
(来⾃百度百科)⼆、优点WebLogic Server具有开发和部署关键任务电⼦商务Web应⽤系统所需的多种特⾊和优势。
标准对业内多种标准的全⾯⽀持,包括EJB、JSP、Servlet、JMS、JDBC、XML(标准通⽤标记语⾔的⼦集)和WML,使Web应⽤系统的实施更为简单,并且保护了投资,同时也使基于标准的解决⽅案的开发更加简便。
可扩展性WebLogic Server以其⾼扩展的架构体系闻名于业内,包括客户机连接的共享、资源pooling以及动态⽹页和EJB组件群集。
快速开发凭借对EJB和JSP的⽀持,以及WebLogic Server 的Servlet组件架构体系,可加速投放市场速度。
这些开放性标准与WebGain Studio 配合时,可简化开发,并可发挥已有的技能,迅速部署应⽤系统。
三、和其他服务器区别tomcat (免费)Tomcat只能算Web Container,是官⽅指定的JSP&Servlet容器。
weblogic中间件常见问题
1Weblogic9.2 在linux下启动很慢打开setDomainEnv.sh 增加-Djava.security.egd=file:/dev/zero修改参数为JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.security.egd=file:/dev/zero"2Windows x64 jrockit 启动3000M 报OutOfMemoryng.OutOfMemoryError: class allocation, 153359080 loaded, 154140672 footprint JVM@check_alloc(src/jvm/model/classload/classalloc.c:118). 19416 bytes通过修改启动内存,设置4G以上3后台日志出现以下报错User <anonymous> does not have permission on weblogic.management.home to perform lookupoperation1、网上找到的解决方案是:打开weblogic控制台,点击你部署工程的那个domain,在右边主页的下面有一个“View Domain-wide Security Settings”连接,点开它,看看复选框“Anonymous Admin Lookup Enabled”前面是没选的,把它勾上。
2、使用了1中的解决方案还是报这个错误,经过高手提醒后发现原因:如果一个weblogic.xml中包含以下的内容:<container-descriptor><prefer-web-inf-classes>true</prefer-web-inf-classes></container-descriptor>这个配置的意思是使weblogic优先加载应用WEB-INF/lib下面的jar包。
营销业务(系统)、系统级优化方案
目录1.项目简介 (3)2.项目定义 (4)2.1。
系统架构图 (4)2。
2.项目范围 (4)2。
3.项目目标 (4)2.4。
成功要素 (4)2.5.项目交付物 (4)2。
6.实施内容及风险防范措施 (5)2。
6.1。
..................................................................................................................................... 优化实施内容52。
6。
2。
.................................................................................................................................. 风险防范措施52.7.优化策略概述 (5)3。
系统瓶颈总结 (6)3.1.系统瓶颈简介 (6)4。
数据库缺陷消除 (7)4。
1。
..................................................................................................................................................... 死锁现象74。
2.ORA—7445现象 (8)5。
中间件优化 (9)5。
1。
....................................................................................................................................... 中间件基本配置95.2。
JDK优化 (11)5.3.堆栈优化 (11)5。
跟我学中间件相关技术及应用——基于J2EE架构的应用服务器Weblogic 的管理和维护
跟我学中间件相关技术及应用——基于J2EE架构的应用服务器Weblogic 的管理和维护1.1.1Weblgic应用服务器概述1、Weblogic应用服务器介绍(1)WebLobic应用服务器是美国BEA公司(现已属于Oracle公司)开发的一个业界领先的应用服务器WebLogic应用服务器遵守J2EE规范并采用面向服务的系统架构,提供有丰富的工具集支持,便于实现业务逻辑、数据和表达的分离,提供开发和部署各种业务驱动应用所必需的底层核心功能。
其综合性功能支持集成化基础结构,既能连接各种遗留系统,也能连接最新的Web 服务。
下图为BEA公司被Oracle公司收购后在Oracle公司的网站上发布的信息截图。
BEA公司被Oracle公司收购的信息截图(2)WebLogic应用服务器提供所有基本核心应用服务器的功能和服务这主要包括负载均衡、故障容错、Web 服务、网络透明、遗留集成、事务管理、安全性、消息、多线程,持久性、数据库连接、资源合并、开发、测试和封装功能等。
这种内置功能不但可以加速应用系统的开发实现,而且还可以减轻开发人员的负担,降低他们自主开发关键性服务的费用。
(3)WebLogic应用服务器的RMI实现支持三种通信格式:T3、T3/THHP和IIOP。
1)T3是一种经过WebLogic优化过的协议,用于在网络线路上传输远程方法调用,在访问EJB时将采用该T3协议。
2)T3/HTTP协议使RMI调用能够穿越只允许HTTP流通的防火墙(WebLogic中RMI调用使用的协议。
3)IIOP是一种CORBA通信协议,WebLogic 应用服务器支持的RMI/IIOP协议,允许Java程序与传统的CORBA系统进行通信。
上述三种协议都可以采用SSL加密方式,保证客户机与服务器之间的通信安全。
2、Weblogic应用服务器中的域(1)多层结构的WebLogic 应用服务器配置` WebLogic应用服务器层通常是一个由互相协调工作的多个WebLogic Server组成的群集。
java lang OutOfMemoryError unable to create new native thread内存泄漏分析
【问题现象】:自动化用例跑了约三个多小时后,界面响应时间长,界面出现500错误。
之后再点击时,页面重定向至首页。
查看jboss 下的server.log 文件发现内存溢出的OutOfMemory 异常。
【出现的问题日志】:ng.OutOfMemoryErrorat java.util.zip.ZipFile.open(Native Method)at java.util.zip.ZipFile.<init>(ZipFile.java:203)at java.util.jar.JarFile.<init>(JarFile.java:132)at java.util.jar.JarFile.<init>(JarFile.java:97)2010-11-24 15:32:48,377 ERROR [STDERR] Exception in thread"Thread-5271"2010-11-24 15:32:48,377 ERROR [STDERR] ng.OutOfMemoryError:unable to create new native thread【问题定位】:对于一般的内存泄漏导致的堆栈溢出,通常的错误信息主要有以下几种。
1. ng.OutOfMemoryError: Java heap space2. ng.OutOfMemoryError: PermGen space3. ng.OutOfMemoryError: Requested array size exceeds VM limit4. ng.OutOfMemoryError: <reason> <stack trace> (Native method)回复次数:1∙∙ luozhangwen ∙(我不懒--押宝党实习生) ∙等 级: ∙ #1楼 得分:0回复于:2010-12-27 16:06:51而在出现内存泄露的机器上,其日志显示是无法创建本地线程的原因所引起的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Weblogic内存溢出及JDK选用中间件应用服务器
前几天部署WebLogic出现线程阻塞情况,查看后台报错:<[STUCK] ExecuteThread: '58' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "697" seconds working on the request "Http Request: aaa.do", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
后来在公司文档中发现以前所有weblogic的部署使用的JDK都是Sun的,于是没有进行具体的分析就进行了更换。
今天客户报告系统反应极慢,查看后台发现包内存溢出异常,导致整个系统没有反应,于是进行了重启才恢复。
------------------------------------------------------------------------
以下内容转自其他Blog
------------------------------------------------------------------------
场景:
用户培训需要培训环境,培训环境搭好后,由于不常更新跑的时间较长,考验系统稳定性的时候到了,很可惜稳定性这个问题与我们大家的美好愿望一直背道而驰,天天求神拜佛也不行很不给面子,发现了一个原因解决了又出现了其他引起当机的因素,弄得是焦头烂额,下面就是我们发现的一个引起当机的原因,请各位提高警惕。
9月16日系统当机,Weblogic报出ng.OutOfMemoryError: PermGen space异常,10-15分钟后就会发生<[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1221538218253> <BEA-000339> <[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)' has become "unstuck".>的错误,此时domain的控制台已经无法访问。
排查分析:
1、参考tomcatFAQ: /tomcat/FAQ/Deployment中如下内容:
Why does the memory usage increase when I redeploy a web application?
Because the Classloader (and the Class objects it loaded) cannot be recycled. They are stored in the permanent heap generation by the JVM, and when you redepoy a new class loader is created, which loads another copy of all these classes. This can cause OufOfMemoryErrors eventually.
Tomcat FAQ指出SUN JVM对处于permanent heap generation(默认4M)的内容不做垃圾回收会导致内存溢出错误。
2、在SUN 官方网站找到一个2003年的bug Report,/bugdatabase/view_bug.do?bug_id=4957990,Synopsis :PermHeap bloat in and only in server VM,直到现在状态还是6-Fix Understood, 没有修复。
解决方案:
根据上面的分析,再结合我们系统的环境(Weblogic 使用Solairs系统安装的JDK5.0)我们可以确定是由于SUN JVM对permanent heap generation 区域的内容不做垃圾回收造成应用动态Load class文件过多引起的OutOfMemory错误。
同时提出两套解决方案:
增加PermGen space参数大小
更换不同厂家JVM
考虑由于开发采用JDK1.5,换用其他JVM存在风险,故修改weblogic启动服务调用的批处理setDomainEnv.sh文件,将其中的一截片断进行修改:
if [ "${JAVA_VENDOR}" = "Sun" ] ; then
MEM_ARGS="${MEM_ARGS} ${MEM_DEV_ARGS} -XX:MaxPermSize=128m"
export MEM_ARGS
fi
中MaxPermSize改成1024m,验证问题是否存在。
实施结果:
系统再未出现OutOfMemoryError运行正常.该原因引起的当机问题解决。
从Java的经典书籍到Sun的官方网站都在宣扬Java的优势之一——垃圾回收,“自动释放内存,减轻编程负担”,可是谁能想到Sun的JVM还有这问题——不回收load class 文件而产生的Class类对象。
所以不要迷信权威,根据现象一步一步抽丝剥茧、细心求证才是王道!
项目大了以后开发环境频繁deploy会导致weblogic报permGen 错误,查了一下,暂时解决的办法是:
在weblogic/common/bin/commEnv.sh中配置
MEM_ARGS="-Xms32m -Xmx200m -XX:MaxPermSize=128m"
-Xms:内存初始值
-Xmx:内存最大值(不要超过内存的80%)
MaxPermSize:PermGen(Class和Meta存放区域)区域内存最大值。
可调整为:
MEM_ARGS="-Xms512m -Xmx512m -XX:MaxPermSize=256m" -XX:MaxPermSize改为256或512。