weblogicjvm内存查看的分类
- 格式:docx
- 大小:17.68 KB
- 文档页数:4
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参数调优的运维经验 (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处理进程内存溢出报错,导致服务器宕机。
性能测试工作室,专注于性能测试技术研究(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日志这里经常能反映一些很重要到情况。
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内存使⽤情况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次数。
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 文件中指定上下文根。
优化WebLogic一、为WebLogic启动设置Java参数垃圾收集(GC)是指JVM释放Java堆中不再使用的对象所占用的内存的过程,而Java堆(Heap)是指Java应用程序对象生存的空间。
堆大小决定了GC的频度和时间。
堆越大,GC频度低,速度慢。
堆越小,GC频度高,速度快。
所以GC和堆大小是一组矛盾。
为了获取理想的Heap堆大小,需要使用-verbosegc参数(Sun jdk: -Xloggc:<file>)以打开详细的GC输出。
分析GC的频度和时间,结合应用最大负载所需内存情况,得出堆的大小。
通常情况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值即:-Xms=-Xmx。
而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。
对于sun 和hp的jvm,永久域太小(默认4M)也可能造成内存溢出,应增加参-XX:MaxPermSize=128m。
建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8堆栈内存优化,修改配置文件:WL_HOME=C:\bea\weblogic81 "%WL_HOME%\common\bin\commEnv.cmd":bea#如果采用的上bea的JDK# JVM Heap(堆内存)最小尺寸为96M,最大尺寸为256Mset MEM_ARGS=-Xms96m -Xmx256m:sun#如果采用的是sun的JDK# JVM Heap(堆内存)最小尺寸为32M,最大尺寸为200M#公共变量对象的内存限制: PermSize:最小尺寸, MaxPermSize :最大允许分配尺寸set MEM_ARGS=-Xms32m -Xmx200m -XX:MaxPermSize=128m监视堆栈使用情况:下载JRockit JDK,该JDK已经自带了JRockit Mission Control工具,目前好像还没有单独下载JRockit Mission Control的地方,于JRockit JDK进行了绑定下载;在C:\bea\jrockit81sp5_142_08\console目录里面运行:C:\bea\jrockit81sp5_142_08\bin\java –Xmanagement -jar ManagementConsole.jar 如何监控weblogic呢?修改weblogic启动脚本startWebLogic.cmd,在里面加入-Xmanagement启动参数:%JAVA_HOME%\bin\java -Xmanagement %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% =%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server二、设置与性能有关的配置参数在一个WebLogic域中,配置文件(config.xml)位于与管理服务器通信的机器里,提供WebLogic MBean的长期存储。
BIEE软件的WEBLOGIC内存参数调整1.BIEE启动顺序✓启动weblogic的AdminServer执行的脚本为d:\obi11r5\user_projects\domains\bifoundation_domain\bin\startWebLogic.cmd 可以认为该脚本启动的是console界面调用d:\obi11r5\user_projects\domains\bifoundation_domain\bin\setDomainEnv.cmd设置各种内存参数,该脚本继续调用d:\obi11r5\user_projects\domains\bifoundation_domain\bin\setOBIDomainEnv.cmd和D:\obi11r5\wlserver_10.3\common\bin\commEnv.cmd。
✓启动BIEE管理服务d:\obi11r5\user_projects\domains\bifoundation_domain\bin\startManagedWebLogic.cmdbi_ser ver1http://localhost:7001启动后,相当于能够登录em界面很奇怪的是Windows下面启动使用的是startWebLogic.cmd但是停止使用的是stopManagedWebLogic.cmd。
调用d:\obi11r5\user_projects\domains\bifoundation_domain\bin\setDomainEnv.cmd设置各种内存参数,该脚本继续调用d:\obi11r5\user_projects\domains\bifoundation_domain\bin\setOBIDomainEnv.cmd和D:\obi11r5\wlserver_10.3\common\bin\commEnv.cmd。
✓启动BIEE各种组件d:\obi11r5\instances\instance1\bin\opmnctl startall2.分析在Windows下启动的命令为D:\obi11r5\instances\v11r5instance1\bifoundation\OracleBIApplication\coreapplication\StartSto pServices.cmdstart_all停止的命令为D:\obi11r5\instances\v11r5instance1\bifoundation\OracleBIApplication\coreapplication\StartSto pServices.cmdstart_allStartStopServer.cmd定义了各种BIEE启动所需环境变量,如DOMAIN_HOME、WLS_HOME、ORACLE_BI_HOME等,然后通过ant启动BIEE,如下:%ANT_HOME%\bin\ant.bat -f StartStopServices.xml %1 -DMW_HOME=%MW_HOME% -DDOMAIN_HOME=%DOMAIN_HOME% -DWLS_HOME=%WLS_HOME% -DINSTANCE_HOME=%INSTANCE_HOME% -DORACLE_BI_HOME=%ORACLE_BI_HOME% -DPRODUCTION_MODE=%PRODUCTION_MODE% -Dwls.host=%wls.host% -Dwls.admin.port=%wls.admin.port% -Dwls.mgd.port=%wls.mgd.port% =%% -DOPMN_PORT=%OPMN_PORT% -DBI_URL=%BI_URL% %WLS_SINGLE_SERVER_INSTALL_FLAG%在分析StartStopServices.xml文件,关键点是wls.admin.start、wls.mgd.start、opmn.start三个target的定义。
java8 jvm参数Java 8 JVM参数在Java开发中,JVM(Java Virtual Machine)参数是非常重要的一部分,它可以对Java程序的性能和行为进行调优和配置。
本文将介绍一些常用的Java 8 JVM参数,并讨论它们的作用和用法。
一、堆内存参数1. -Xms:指定JVM的初始堆内存大小。
比如,-Xms512m表示初始堆内存为512MB。
2. -Xmx:指定JVM的最大堆内存大小。
比如,-Xmx1024m表示最大堆内存为1GB。
3. -Xmn:指定JVM的新生代内存大小。
新生代内存主要用于存放新创建的对象。
比如,-Xmn256m表示新生代内存为256MB。
4. -XX:NewRatio:指定新生代和老年代内存的比例。
默认值为2,表示新生代和老年代的比例为1:2。
5. -XX:SurvivorRatio:指定Eden区和Survivor区的比例。
默认值为8,表示Eden区和Survivor区的比例为8:1。
二、垃圾回收参数1. -XX:+UseSerialGC:使用串行垃圾回收器。
适用于单线程环境,对于小型应用或测试环境比较适用。
2. -XX:+UseParallelGC:使用并行垃圾回收器。
适用于多核处理器环境,可以充分利用多核的性能。
3. -XX:+UseConcMarkSweepGC:使用CMS(Concurrent Mark Sweep)垃圾回收器。
适用于对响应时间有较高要求的场景,能够减少垃圾回收暂停时间。
4. -XX:+UseG1GC:使用G1(Garbage First)垃圾回收器。
适用于大内存应用和服务器环境,能够更好地管理堆内存。
5. -XX:MaxGCPauseMillis:设置垃圾回收暂停时间的目标值。
默认值为200ms。
三、调优参数1. -XX:MetaspaceSize:指定元空间(Metaspace)的初始大小。
元空间主要用于存放类的元数据信息。
weblogic基本⽬录介绍,位数查看,启动与发布项⽬,修改JVM参数,设置项⽬为默认项⽬ 这⾥的基本⽬录%base%表⽰安装⽬录,如我的⽬录为:E:/weblogic就是%base%1.weblogic⽬录介绍 weblogic主要的⽬录介绍:1.⽇志⽬录: 每个domain(域)都有⾃⼰的⽇志⽬录,⼀般启动⽇志是AdmiServer.log,存放位置在:%base%\user_projects\domains\base_domain\servers\AdminServer\logs,如下:2.项⽬发布⽬录: 每个域也都有⾃⼰的项⽬发布⽬录。
存放位置在:%base%\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_user,例如:3.JSP编译之后的⽬录:(我们需要知道weblogic编译JSP依赖⾃⼰的lib库,所以在编译之后的class⽂件头部引⼊⾃⼰的lib,⽽tomcat也依赖于⾃⼰的lib) 存放的是JSP编译之后的⽬录,位置在:%base%\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_user\Struts\km2umq\jsp_servlet⽂件夹下⾯。
⽽且JSP不会⼀次性全部编译,是我们第⼀次访问哪个JSP编译哪个JSP(JSP的延迟编译特性确实给性能带来了不⼤不⼩的影响,第⼀次访问超慢的那种状况给⼈的感觉⾮常不好),⽽且项⽬的根⽬录的JSP编译之后的package是默认的,然后每个⽬录对应⼀个package,例如:(1)根⽬录下的JSP: JSP内容 <%@ page pageEncoding="GBK" contentType="text/html; charset=GBK" %><%@taglib uri = "/jsp/jstl/core" prefix="c" %><c:set var="baseurl" value="${pageContext.request.contextPath}"></c:set><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>"${baseurl}"</body></html> 编译之后的位置:%base%\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_user\Struts\km2umq\jsp_servlet\ 查看反编译之后的内容:package jsp_servlet;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import javax.servlet.jsp.JspFactory;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.PageContext;import javax.servlet.jsp.SkipPageException;import javax.servlet.jsp.tagext.JspTag;import javax.servlet.jsp.tagext.SimpleTag;import javax.servlet.jsp.tagext.Tag;import org.apache.taglibs.standard.tag.rt.core.SetTag;import weblogic.jsp.internal.jsp.JspFunctionMapper;import weblogic.jsp.internal.jsp.utils.JspRuntimeUtils;import weblogic.servlet.jsp.ByteWriter;import weblogic.servlet.jsp.DependencyInjectionHelper;import weblogic.servlet.jsp.ELHelper;import weblogic.servlet.jsp.ExpressionInterceptor;import weblogic.servlet.jsp.ExpressionInterceptor.Type;import weblogic.servlet.jsp.JspBase;import weblogic.servlet.jsp.StaleChecker;import weblogic.servlet.jsp.StaleIndicator;public final class __forwardextends JspBaseimplements StaleIndicator{private static void _releaseTags(PageContext pageContext, JspTag t){while (t != null){DependencyInjectionHelper.preDestroy(pageContext, t);if ((t instanceof Tag)){Tag tmp = (Tag)t;t = ((Tag)t).getParent();try{tmp.release();}catch (Exception localException) {}}else{t = ((SimpleTag)t).getParent();}}}public boolean _isStale(){boolean _stale = _staticIsStale((StaleChecker)getServletConfig().getServletContext());return _stale;}public static boolean _staticIsStale(StaleChecker sci){if (sci.isResourceStale("/forward.jsp", 1537094471925L, "12.2.1.3.0", "UTC")) {return true;}return false;}private ExpressionInterceptor _jsp_expressionInterceptor = JspRuntimeUtils.getNonOperExpressionInterceptor();private static boolean _WL_ENCODED_BYTES_OK = true;private static final String _WL_ORIGINAL_ENCODING = "GBK".intern();private static byte[] _getBytes(String block){try{return block.getBytes(_WL_ORIGINAL_ENCODING);}catch (UnsupportedEncodingException u){_WL_ENCODED_BYTES_OK = false;}return null;}private static String _wl_block0 = "\r\n";private static final byte[] _wl_block0Bytes = _getBytes(_wl_block0);private static String _wl_block1 = "\r\n<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<title>Insert title here</title>\r\n</head>\r\n<body>\r private static final byte[] _wl_block1Bytes = _getBytes(_wl_block1);private static String _wl_block2 = "\"\r\n</body>\r\n</html>";private static final byte[] _wl_block2Bytes = _getBytes(_wl_block2);private static JspFunctionMapper _jspx_fnmap = JspFunctionMapper.getInstance();protected void _jspInit(){this._jsp_expressionInterceptor = JspRuntimeUtils.getExpressionInterceptor(getServletConfig());}public void _jspService(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ServletConfig config = getServletConfig();ServletContext application = config.getServletContext();JspTag _activeTag = null;Object page = this;PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);response.setHeader("Content-Type", "text/html; charset=GBK");JspWriter out = pageContext.getOut();ByteWriter _bw = (ByteWriter)out;_bw.setInitCharacterEncoding(_WL_ORIGINAL_ENCODING, _WL_ENCODED_BYTES_OK);JspWriter _originalOut = out;HttpSession session = request.getSession(true);try{response.setContentType("text/html; charset=GBK");_bw.write(_wl_block0Bytes, _wl_block0);_bw.write(_wl_block0Bytes, _wl_block0);if (_jsp__tag0(request, response, pageContext, _activeTag, null)) {return;}_bw.write(_wl_block1Bytes, _wl_block1);out.write(this._jsp_expressionInterceptor.intercept((String)ELHelper.evaluate("${baseurl}", String.class, pageContext, null), pageContext, ExpressionInterceptor.Type.EL)); _bw.write(_wl_block2Bytes, _wl_block2);}catch (Throwable __ee){if (!(__ee instanceof SkipPageException)){while ((out != null) && (out != _originalOut)) {out = pageContext.popBody();}_releaseTags(pageContext, _activeTag);pageContext.handlePageException(__ee);}}finally{JspFactory.getDefaultFactory().releasePageContext(pageContext);}}private boolean _jsp__tag0(ServletRequest request, ServletResponse response, PageContext pageContext, JspTag activeTag, JspTag parent)throws Throwable{JspTag _activeTag = activeTag;JspWriter out = pageContext.getOut();ByteWriter _bw = (ByteWriter)out;SetTag __tag0 = null;int __result__tag0 = 0;if (__tag0 == null){__tag0 = new SetTag();DependencyInjectionHelper.inject(pageContext, __tag0);}__tag0.setPageContext(pageContext);JspRuntimeUtils.setParentForClassicTag(__tag0, parent);__tag0.setVar((String)JspRuntimeUtils.convertType("baseurl", String.class, "var"));__tag0.setValue(ELHelper.evaluate("${pageContext.request.contextPath}", Object.class, pageContext, _jspx_fnmap));_activeTag = __tag0;try{__result__tag0 = __tag0.doStartTag();if ((__result__tag0 == 0) ||(__tag0.doEndTag() == 5)){_activeTag = null;_releaseTags(pageContext, __tag0);return true;}}finally{_activeTag = __tag0.getParent();DependencyInjectionHelper.preDestroy(pageContext, __tag0);__tag0.release();}return false;}}(2)⽬录下的JSP,⼀个⽬录相当于⼀个package:编译之后的位置:查看你编译之后的头部内容:4.存放lib的⽬录: 存放⼀些公共项⽬使⽤的lib,存放位置在%base%\user_projects\domains\base_domain\lib,如下:5.weblogic⾃带的lib,类似于tomcat的lib⽬录,是weblogic⾃⼰启动所需要的包,⼀般也是造成冲突包的位置: 存放位置在:%base%\wlserver\modules6.缓存⽬录: 有时候缓存造成发布问题,所以我每次除了清掉缓存⽬录,还要清掉logs⽬录和项⽬tmp⽬录,也就是我每次启动项⽬都清掉下⾯三个⽬录,每次启动都会重新⽣成下⾯三个⽬录:2.weblogic位数查看 在weblogic安装⽬录下wlserver\server\native\win⽬录下根据⽬录即可查看,例如我的64位的:3.weblogic启动 weblogic启动的程序是在%base%\user_projects\domains\base_domain\startWebLogic.cmd (其内部调⽤了%base%\\user_projects\domains\base_domain\bin⽬录下的startWebLogic.cmd),源码如下:@ECHO OFF@REM WARNING: This file is created by the Configuration Wizard.@REM Any changes to this script may be lost when adding extensions to this configuration.SETLOCALset DOMAIN_HOME=E:\weblogic\user_projects\domains\base_domaincall "%DOMAIN_HOME%\bin\startWebLogic.cmd" %*ENDLOCAL 双击之后启动即可,启动可以访问登陆页⾯。
查看java内存情况的⼏个常⽤命令java 命令简单查看jvm内存使⽤状况jinfo:可以输出并修改运⾏时的java 进程的opts。
jps:与unix上的ps类似,⽤来显⽰本地的java进程,可以查看本地运⾏着⼏个java程序,并显⽰他们的进程号。
jstat:⼀个极强的监视VM内存⼯具。
可以⽤来监视VM内存内的各种堆和⾮堆的⼤⼩及其内存使⽤量。
jmap:打印出某个java进程(使⽤pid)内存内的所有'对象'的情况(如:产⽣那些对象,及其数量)。
1、jinfojinfo:的⽤处⽐较简单,就是能输出并修改运⾏时的java进程的运⾏参数。
⽤法是jinfo -opt pid 如:查看52606的MaxPerm⼤⼩可以⽤ jinfo -flag MaxPermSize 52606。
2、jps显⽰当前所有java进程pid的命令,我们可以通过这个命令来查看到底启动了⼏个java进程(因为每⼀个java程序都会独占⼀个java虚拟机实例),不过jps有个缺点是只能显⽰当前⽤户的进程id,要显⽰其他⽤户的还只能⽤linux的ps命令。
执⾏jps命令,会列出所有正在运⾏的java进程,其中jps命令也是⼀个java程序,前⾯的数字就是对应的进程id,这个id的作⽤⾮常⼤,后⾯会有相关介绍。
jps -help:jps -l :输出应⽤程序main.class的完整package名或者应⽤程序jar⽂件完整路径名jps -v:输出传递给JVM的参数jps失效我们在定位问题过程会遇到这样⼀种情况,⽤jps查看不到进程id,⽤ps -ef | grep java却能看到启动的java进程。
要解释这种现象,先来了解下jps的实现机制:java程序启动后,会在⽬录/tmp/hsperfdata_{userName}/下⽣成⼏个⽂件,⽂件名就是java进程的pid,因此jps列出进程id就是把这个⽬录下的⽂件名列⼀下⽽已,⾄于系统参数,则是读取⽂件中的内容。
中间件Weblogic 管理监控注意事项Weblogic 监控的目的:发现系统屮的隐患及系统运行是否稳定。
主要从以下几方面进行检查:一、操作系统:检査系统CPU 、内存等使用是否异常。
如在负载不大的悄况下,卬U 是否一 直居高不下,内存占用是否一直很大。
可以通过top(topas)、vmstat 、free -m 、 ps 等命令査看。
网络:1、 位于一个domain 中各个服务器是否能够联通。
2、 w eblogic 服务器与数据库服务器的链接是否畅通。
Weblogic检査是否对jvm 进行了优化,如最大堆内存、最小堆内存,以及gc 算法是 否合理。
主要是通过weblogic 控制台,査看jvm 的空闲内存的变化情况,每次gc 的 回收情况。
特别是可以在控制台强制垃圾回收,看看回收的内存是否太小。
如 果回收的内存太小,说明可能存在内存益处的隐患。
3、检查线程数通过weblogic 控制台可以査看线程数的统计信息oweblogic9及以上的线程 塔自优化的。
但应该査看系统的线程最大数是否过大,如果过大,就要注意系 统为什么会有这么大的压力。
如下为示例截图itiread l»(wl(rthnrpd - More rolimrs tJefet)Showing l - 1 of 1 PreviXB问tActive Execute Threads :在活动的线程池内处理请求的线程个数 Execute Thread Total Count :线程池内线程的总数Execute Thread Idle Count ;池内的空闲线程数。
它不包含stuck 和standby 的线程数。
它是指等待接收新请求到来并处理的线程个数queue length :请求队列的长度,及队列中等待线程处理的请求的个数hogging thread count :线程处理一个请求时间超过一定值被视为hogging 状态,如果继续处理请求超过一定时间将被视为stuck,或处理完请求后被 放回线程池1、 2、检查gc 是否正常standby thread count :统计在standby (备用)线程池内的线程数o这些线程不需要处理当前请求被放入standby池内,当活动的线程池内需要更多线程时,这些线程将被激活。
Weblogic 启动内存配置1、找到配置文件位置,默认路径是wlserver_10.3/common/bin/commEnv.sh2、找到commEnv.sh文件,修改此配置文件if [ "$PRODUCTION_MODE" = "true" ]; thencase $JA V A_VENDOR inBEA)JA V A_VM=-jrockitMEM_ARGS="-Xms512m -Xmx2048m";;HP)JA V A_VM=-serverMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m";;IBM)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;Sun)JA V A_VM=-serverMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m";;*)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;esacelsecase $JA V A_VENDOR inBEA)JA V A_VM=-jrockitMEM_ARGS="-Xms512m -Xmx2048m"JA V A_OPTIONS="${JA V A_OPTIONS} -Xverify:none";;HP)JA V A_VM=-clientMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m";;IBM)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;Sun)JA V A_VM=-clientMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m"JA V A_OPTIONS="${JA V A_OPTIONS} -Xverify:none";;*)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;红色标注的位置是启动时分配的内存大小,可根据实际需求进行调整。
JVM堆内存(heap)详解Java 堆内存管理是影响性能的主要因素之⼀。
堆内存溢出是 Java项⽬⾮常常见的故障,在解决该问题之前,必须先了解下 Java 堆内存是怎么⼯作的。
先看下JAVA堆内存是如何划分的,如图:1. JVM内存划分为堆内存和⾮堆内存,堆内存分为年轻代(Young Generation)、⽼年代(Old Generation),⾮堆内存就⼀个永久代(Permanent Generation)。
2. 年轻代⼜分为Eden(⽣成区)和 Survivor(⽣存区)。
Survivor区由FromSpace和ToSpace组成。
Eden区占⼤容量,Survivor两个区占⼩容量,默认⽐例是8:1:1。
3. 堆内存⽤途:存放的是对象,垃圾收集器就是收集这些对象,然后根据GC算法回收。
4. ⾮堆内存⽤途:永久代,也称为⽅法区,存储程序运⾏时长期存活的对象,⽐如类的元数据、⽅法、常量、属性等。
在JDK1.8版本废弃了永久代,替代的是元空间(MetaSpace),元空间与永久代上类似,都是⽅法区的实现,他们最⼤区别是:元空间并不在JVM中,⽽是使⽤本地内存。
元空间有两个参数:MetaspaceSize:初始化元空间⼤⼩,控制发⽣GC阈值。
MaxMetaspaceSize:限制元空间⼤⼩上限,防⽌异常占⽤过多物理内存。
为什么移除永久代?移除永久代原因:为融合HotSpot JVM与JRockit VM(新JVM技术)⽽做出的改变,因为JRockit没有永久代。
有了元空间就不再会出现永久代OOM问题了分代概念新⽣成的对象⾸先放到年轻代Eden区,当Eden空间满了,触发Minor GC,存活下来的对象移动到 Survivor0区,Survivor0区满后触发执⾏Minor GC,Survivor0区存活对象移动到Survivor1区,这样保证了⼀段时间内总有⼀个survivor区为空。
经过多次Minor GC仍然存活的对象移动到⽼年代。
WEBLOGIC启动JVM参数设置经验2011-11-01 08:41:46分类:Linux1. 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。
32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。
我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:o java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:设置JVM最大可用内存为3550M。
-Xms3550m:设置JVM促使内存为3550m。
此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g:设置年轻代大小为2G。
整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。
持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。
此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每个线程的堆栈大小。
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。
更具应用的线程所需内存大小进行调整。
在相同物理内存下,减小这个值能生成更多的线程。
但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
o java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。
设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。
Weblogic内存溢出及常用参数配置一、WebLogic内存溢出最近访问量门户访问量突然增大,总是内存溢出,频繁宕机,调整了很多参数没起作用,偶然发现Weblogic域在不断增大,罪魁祸首竟然是Weblogic的诊断文件,也是造成Weblogic内存溢出的主要原因。
当Weblogic启动时就加载了每个Server上的诊断文件,占用了大部分内存分配,用户访问量越大这个文件也随之越大,将他删除后重新启动服务,八个Server竟然也只用了6分钟,部署项目也只需7,8分钟,一直平稳运行,再无内存溢出现象。
该文件地址:/bea/user_projects/domains/{domain_name}/servers/{Server_name}/data/s tore/diagnostics/*.DAT(注:AdminServer下该诊断文件为1M左右正常)但是该文件还会继续生成增大,我们的域中并没有配置相关启动诊断文件的设置,Bea售后也无法解释,但可以通过尝试增加启动参数(ui.disableInstrumentation=true)来控制该诊断文件的增长,在/bea/user_projects/domains/{domain_name}/bin/startWebLogic.sh中:if [ "${WLS_REDIRECT_LOG}" = "" ] ; thenecho "Starting WLS with line:"echo "${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} ui.disableInstrumentation=true =${S ERVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY _SETTINGS} ${SERVER_CLASS}"${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS}ui.disableInstrumentation=true =${SE RVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS}elseecho "Redirecting output from WLS window to ${WLS_REDIRECT_LOG}"${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS}ui.disableInstrumentation=true =${SE RVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS} >"${WLS_REDIRECT_LOG}" 2>&1该参数控制netui的诊断文件的生成。
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的日志文件中。