weblogicjvm内存查看的分类
内存溢出工具使用方法培训

MAT常用功能页面介绍
Class Loader Explorer
按下图方式打开Class Loader Explorer页面,查看溢出时系统中存在哪些ClassLoader,每个 ClassLoader加载的类数量(Defined Classes)和类的实例数(No .Of instances)。
WebLogic、Tomcat的Javacore信息存放在控制台的输出信 息中。
WebSphere会在server目录(如 \IBM\WebSphere\AppServer\profiles\ AppSrv01\)下生成 独立的javacore文件。
Javacore可以通过以下方式手动获取:Linux下使用 kill -3 进程号,生成Javacore;Windows下通过选中java运行的命 令窗口,按组合键ctrl+break生成Javacore。
基本分析方法
根据heapdump提供的信息,找到javacore中可能出现 问题的代码段,然后进一步分析代码。
MAT安装
第一步:解压安装包
第二步:修改 MemoryAnalyzer.ini配置文件,将Xmx参数设置的足够大,以便能够打开大的 heapdump。
第三步:运行MemoryAnalyzer.exe 第四步:安装插件。
HeapDump生成比较慢,在文件生成过程中,一定不要杀掉进 程,当文件大小不再变化时,才可以杀毒进程。否则文件生成 的不完整,无法分析。
WebLogic、Tomcat需要在JVM参数中添加XX:+HeapDumpOnOutOfMemoryError,否则在内存溢出时, 是不会自动生成HeapDump的。WebSphere不需要添加该参数, 内存溢出时可自动生成heapdump文件。
jvm_buffer_count_buffers指标 -回复

jvm_buffer_count_buffers指标-回复什么是jvm_buffer_count_buffers指标?在理解jvm_buffer_count_buffers指标之前,我们需要先了解一下JVM(Java虚拟机)的概念。
JVM是一种可以运行Java字节码的虚拟机,它是Java语言跨平台的重要保证。
在JVM的内部,有一个内存管理子系统,负责管理JVM运行时所需要的内存。
JVM中的内存管理子系统将内存划分为不同的区域,其中之一就是缓冲区(Buffer)。
缓冲区是一种临时存储数据的区域,用于在数据输入和输出之间进行临时存储和传输。
JVM中的缓冲区被用来提高数据处理的效率,尤其在处理大量数据时非常重要。
为了监控和管理JVM中的缓冲区,JVM提供了一系列的性能监控指标,其中之一就是jvm_buffer_count_buffers指标。
jvm_buffer_count_buffers指标是用来统计JVM中缓冲区的数量的指标。
具体而言,它表示当前JVM中所使用的缓冲区的数量。
通过监控该指标,我们可以了解JVM在运行过程中所使用的缓冲区的情况,从而更好地了解和管理JVM的内存使用情况。
那么,如何获取和解读jvm_buffer_count_buffers指标呢?首先,我们需要使用一种监控工具来获取jvm_buffer_count_buffers 指标的值。
常见的监控工具包括但不限于JConsole、VisualVM等。
这些工具可以连接到正在运行的JVM实例,并提供了丰富的性能监控指标。
一旦连接到JVM实例,我们就可以在监控工具的界面上找到jvm_buffer_count_buffers指标。
具体的位置和展示形式可能因监控工具而异,但通常会以数字的形式展示出来。
我们可以定期地观察该指标的值,或者将其与其他指标进行比较,以获得更全面的性能分析和优化建议。
在理解jvm_buffer_count_buffers指标之后,我们需要思考它的含义和应用场景。
Weblogic中间件运维经验汇总

Weblogic中间件运维经验汇总目录关于Weblogic参数调优的运维经验 (2)Weblogic性能调优的处理方法 (5)关于输电项目Weblogic安装的运维经验 (8)Weblogic回收数据库连接数配置的方法 (14)在Apache和Weblogic中分别部署静态页面的方法 (17)Weblogic Server性能调优经验 (20)WeblogicJVM堆参数设置方法 (24)关于Weblogic参数调优的运维经验报送单位:北京公司审核人:类型:业务应用关键字:GC垃圾回收1、引言为了提高维护人员运维水平,以集中与分享日常运行维护经验为目的,现进行典型经验的编制。
2、现象描述部分应用服务器出现宕机现象,在F5上查看时已经掉出集群状态。
3、处理过程停止宕机应用服务器上的Weblogic进程。
/home/weblogic/bea/user_projects/domains/pms/bin/setDomainEn v.sh文件中的启动内存大小并添加垃圾回收机制,修改后如下:MEM_ARGS="-Xms5248m -Xmx5248m -Xmn1536m-XX:SurvivorRatio=6-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:CMSFullGCsBeforeCompaction=20-XX:+UseFastAccessorMethods-XX:+AggressiveOpts"3、修改完成后重启Weblogic服务。
4、原因分析在收到报警信息后,对后台日志进行查看,报错信息如下:Exception in thread "CBM_正常处理任务线程" ng.OutOfMemoryError: Java heap spaceatoracle.jdbc.driver.OracleStatement.prepareAccessors(OracleStatement.ja va:868)atoracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatem ent.java:1045)atoracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPre paredStatement.java:839)atoracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatem ent.java:1132)atoracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrepa redStatement.java:3316)atoracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)经过对报错日志分析,状态检修的CBM处理进程内存溢出报错,导致服务器宕机。
Weblogic常用监控方法及指标

性能测试工作室,专注于性能测试技术研究(JMSRuntimeJMSServersCurrentCount 返回当前JMS服务的连接数ConnectionsCurrentCount 返回本JMS服务器上当前的连接数JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数JVMRuntimeHeapSizeCurrent 返回当前JVM堆中内存数,单位时字节HeapFreeCurrent 返回当前JVM堆中空闲内存数,单位时字节ExecuteQueueRuntimeExecuteThreadCurrentIdleCount 返回队列中当前空闲线程数PendingRequestOldestTime 返回队列中最长的等待时间PendingRequestCurrentCount 返回队列中等待的请求数Queue Length 队列长度JDBCConnectionPoolRuntimeWaitingForConnectionHighCount返回本JDBCConnectionPoolRuntimeMBean 上最大等待连接数WaitingForConnectionCurrentCount 返回当前等待连接的总数MaxCapacity 返回JDBC池的最大能力WaitSecondsHighCount 返回等待连接中的最长时间等待者的秒数ActiveConnectionsCurrentCount 返回当前活动连接总数ActiveConnectionsHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大活动连接数注:weblogic通常监控JVM和执行队列,JDBC连接池,其中执行队列最关键的指标是Queue Length 队列长度weblogic一般来说监控jvm的使用、执行线程队列情况、和连接池的变化情况,还有一个很重要的检查weblogic的console日志这里经常能反映一些很重要到情况。
WebLogic的日常操作和监控

WebLogic的启动
• Admin Server的启动
• startWebLogic.cmd/sh • 在Unix或Linux中为了在telnet退出后让WebLogic继续运行,需要使用 nohup和&符来调用启动命令:nohup ./startWebLogic.sh & • WebLogic的标准输出和标准出错信息会纪录在nohup.out文件中
WebLogic Server的停止- console方式
WebLogic Server的停止- 脚本方式
• Admin Server停止
• ./stopWebLogic.cmd/sh username password
• Managed Server停止
• ./stopManagedWebLogic.cmd/sh <servername> <t3://adminip:adminport> username password
在这条日志信息中,它们的格式是: 时间戳,错误级别,子系统 ,机器名,Server名称,线程号,用户号,事务号,.. 信息号 ,文本信息。 如果这信息包括跟踪堆栈的信息,这些信息将紧跟在这条信息 后面。
如何去分析日志
日志中出现错误,如何去请求帮助
如果日志中出现错误,您可以到BEA网站去查询相关 的错误信息和解决办法,如找不到,可以通过以下途径寻求帮助。
• 范围不同,信息内容也不同
• 涉及Domain范围内的日志写入Domain log(如Cluster,RMI 通讯等信息)
• Domain Log Filter
• 个或多个server按过滤条件过滤后的一些错误信息才传递给 Domain log
• 常见的错误也不同
premetheus jvm监控指标

premetheus jvm监控指标Prometheus是一个开源的监控系统,广泛应用于各种应用程序和服务的监控和告警中。
它具有灵活的数据模型和强大的查询语言,可以通过收集和存储时间序列数据来监控系统性能,并提供强大的告警和通知功能。
JVM(Java Virtual Machine)是一种能够执行Java字节码的虚拟机。
作为开发和运行Java应用程序的平台,JVM的监控是非常重要的,以确保应用程序的稳定性和性能。
Prometheus提供了一系列的JVM监控指标,可以帮助我们深入了解JVM的运行情况。
下面将介绍一些常用的JVM监控指标:1. JVM内存相关指标:- jvm_memory_bytes_used:JVM已使用的内存字节数。
通过监控这个指标,我们可以了解JVM内存使用量,及时进行内存调优。
- jvm_memory_bytes_committed:JVM已提交的内存字节数。
与使用的内存不同,已提交的内存是JVM从操作系统请求的内存数量。
- jvm_memory_bytes_max:JVM可以使用的最大内存字节数。
通过比较已使用的内存和最大内存,可以判断JVM是否需要进行扩容。
2. JVM垃圾回收指标:- jvm_gc_collection_seconds_count:垃圾回收的次数。
通过监控这个指标,可以了解系统中垃圾回收的频率,从而判断系统的性能。
- jvm_gc_collection_seconds_sum:垃圾回收的总时间。
通过监控这个指标,可以了解垃圾回收所花费的时间,从而判断系统的性能。
3. JVM线程相关指标:- jvm_threads_current:当前活跃的线程数。
通过监控这个指标,可以了解系统中线程的数量,从而判断系统的并发情况。
- jvm_threads_daemon:守护线程的数量。
通过监控这个指标,可以了解系统中守护线程的数量,从而判断系统的运行情况。
4. JVM类加载相关指标:- jvm_classes_loaded:已加载的类的数量。
Linux常用命令之查看jvm内存使用情况

Linux常⽤命令之查看jvm内存使⽤情况jstat命令可以查看堆内存各部分的使⽤情况:
⼀、垃圾回收统计:jstat -gc 进程id
参数解释:
S0C:第⼀个幸存区的⼤⼩
S1C:第⼆个幸存区的⼤⼩
S0U:第⼀个幸存区的使⽤⼤⼩
S1U:第⼆个幸存区的使⽤⼤⼩
EC:伊甸园区的⼤⼩
EU:伊甸园区的使⽤⼤⼩
OC:⽼年代⼤⼩
OU:⽼年代使⽤⼤⼩
MC:⽅法区⼤⼩
MU:⽅法区使⽤⼤⼩
CCSC:压缩类空间⼤⼩
CCSU:压缩类空间使⽤⼤⼩
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:⽼年代垃圾回收次数
FGCT:⽼年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
⼆、堆内存统计:
jstat -gccapacity 进程id
NGCMN:新⽣代最⼩容量
NGCMX:新⽣代最⼤容量
NGC:当前新⽣代容量
S0C:第⼀个幸存区⼤⼩
S1C:第⼆个幸存区的⼤⼩
EC:伊甸园区的⼤⼩
OGCMN:⽼年代最⼩容量
OGCMX:⽼年代最⼤容量
OGC:当前⽼年代⼤⼩
OC:当前⽼年代⼤⼩
MCMN:最⼩元数据容量
MCMX:最⼤元数据容量
MC:当前元数据空间⼤⼩
CCSMN:最⼩压缩类空间⼤⼩
CCSMX:最⼤压缩类空间⼤⼩CCSC:当前压缩类空间⼤⼩YGC:年轻代gc次数
FGC:⽼年代GC次数。
weblgoic使用手册

Weblogic使用手册1、weblogic上下文路径问题:weblogic.xml文件内容如下错误的配置如下<weblogic-web-app><context-root>/</context-root><virtual-directory-mapping><local-path>Z:/message/upload</local-path><url-pattern>/message/upload/*</url-pattern></virtual-directory-mapping></weblogic-web-app>正确的配置如下<weblogic-web-app><context-root>/</context-root><virtual-directory-mapping><local-path>z:/</local-path><url-pattern>/*</url-pattern></virtual-directory-mapping></weblogic-web-app>为啥第一个访问不了呢???原因就在<context-root>/</context-root>上。
>>>>>>>>>>>>>>>>>>>>>>>>>摘自文档开始context-rootcontext-root 元素定义该独立Web 应用程序的上下文根。
如果Web 应用程序不是独立的,而属于某EAR 的一部分,请在该EAR 的META-INF/application.xml 文件中指定上下文根。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
weblogic jvm内存查看的分类
调整weblogic jvm内存参数大小,其中的原理是什么?为此店铺为大家整理推荐了查到的相关信息,希望大家喜欢。
weblogic jvm内存
调整 jvm参数A:JVM启动参数共分为三类:
其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
其二是非标准参数(-X),指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。
但是在生产环境中,并不保证所有jvm实现都满足,所以为了提高性能,往往需要调整这些参数,以求系统达到最佳性能。
另外这些参数不保证向后兼容,也即是说“如有变更,恕不在后续版本的JDK通知”(这是官网上的原话);
其三是非Stable参数(-XX),这类参数在jvm中是不稳定的,不适合日常使用的,后续也是可能会在没有通知的情况下就直接取消了,需要慎重使用。
B:而JVM 内存又可分为三个主要的域:
新域、旧域以及永久域。
JVM生成的所有新对象放在新域中。
一旦对象经历了一定数量的垃圾收集循环后,便进入旧域。
而在永久域中是用来存储JVM自己的反射对象的,如class和method对象,而且GC(Garbage Collection)不会在主程序运行期对永久域进行清理。
其中新域和旧域属于堆,永久域是一个独立域并且不认为是堆的一部分。
C:各主要参数的作用如下:
-Xms:设置jvm内存的初始大小
-Xmx:设置jvm内存的最大值
-Xmn:设置新域的大小(这个似乎只对jdk1.4来说是有效的,后来就废弃了)
-Xss:设置每个线程的堆栈大小(也就是说,在相同物理内存下,减小这个值能生成更多的线程)
-XX:NewRatio :设置新域与旧域之比,如-XX:NewRatio = 4就表示新域与旧域之比为1:4
-XX:NewSize:设置新域的初始值
-XX:MaxNewSize :设置新域的最大值
-XX:PermSize:设置永久域的初始值
-XX:MaxPermSize:设置永久域的最大值
-XX:SurvivorRatio=n:设置新域中Eden区与两个Survivor区的比值。
(Eden区主要是用来存放新生的对象,而两个Survivor区则用来存放每次垃圾回收后存活下来的对象)
D:常见的错误:
ng.OutOfMemoryError相信很多开发人员都用到过,这个主要就是JVM参数没有配好引起的,但是这种错误又分两种:ng.OutOfMemoryError: Java heap space和ng.OutOfMemoryError: PermGen space,其中前者是有关堆内存的内存溢出,可以同过配置-Xms和-Xmx参数来设置,而后者是有关永久域的内存溢出,可以通过配置 -XX:MaxPermSize来设置。
下面是个例子,请根据实际情况进行修改,修改run.conf文件中的如下内容:
JAVA_OPTS="-Xms256m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Djboss.platform.mbeanserver"
日志文件设置:
jbossserverdefaultlog
若需要修改JBoss默认的log4j设置,可修改JBoss安装目录"serverdefaultconf下的jboss-log4j.xml文件,在该文件中可以看到,log4j的日志输出在JBoss安装目录"server
如果使用log4j日志框架,将配置文件放在工程目录下的话容易引
起与jboss日志配置的冲突,一个比较好的方式就是将日志配置到jboss的jboss-log4j.xml文件中,文件的目录是($JBOSS)/server/default/conf。
在配置文件中添加以下内容:<appender name="myLog" class="org.apache.log4j.DailyRollingFileAppender">
<!--设置通道名称是:file,输出方式DailyRollingFileAppender-->
<param name="File" value="${jboss.server.home.dir}/log/Mqs.log"/>
<!--日志文件路径和文件名称 -->
<param name="Append" value="true"/>
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志-->
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<!-- Rollover at the top of each hour
<param name="DatePattern" value="'.'yyyy-MM-dd-HH"/> -->
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message/n -->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
<!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message/n
<param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
-->
</layout>
</appender>
<logger name="com.all" additivity="false" >
<level value="INFO" />
<appender-ref ref="myLog"/>
</logger>
在web工程中使用日志的时候就可以这样写
Logger log = Logger.getLogger("com.all");
log.debug("test");
其中"com.all"与<logger name="com.all" additivity="false" > 中的name属性值对应。
additivity属性非常重要,它表示是否继承root配置的输出通道,默认配置是true,如果不将其设为false的话会导致日志重复输出到控制台与jboss的日志文件中。