JMSRuntime
JMSServersCurrentCount 返回当前JMS服务的连接数
ConnectionsCurrentCount 返回本JMS服务器上当前的连接数
JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数
ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数
JVMRuntime
HeapSizeCurrent 返回当前JVM堆中内存数,单位时字节
HeapFreeCurrent 返回当前JVM堆中空闲内存数,单位时字节
ExecuteQueueRuntime
ExecuteThreadCurrentIdleCount 返回队列中当前空闲线程数
PendingRequestOldestTime 返回队列中最长的等待时间
PendingRequestCurrentCount 返回队列中等待的请求数
Queue Length 队列长度
JDBCConnectionPoolRuntime
WaitingForConnectionHighCount
返回本JDBCConnectionPoolRuntimeMBean 上最大等待连接数
WaitingForConnectionCurrentCount 返回当前等待连接的总数
MaxCapacity 返回JDBC池的最大能力
WaitSecondsHighCount 返回等待连接中的最长时间等待者的秒数
ActiveConnectionsCurrentCount 返回当前活动连接总数
ActiveConnectionsHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大活动连接数
注:
weblogic通常监控JVM和执行队列,JDBC连接池,其中执行队列最关键的指标是Queue Length 队列长度
weblogic一般来说监控jvm的使用、执行线程队列情况、和连接池的变化情况,还有一个很重要的检查weblogic的console日志这里经常能反映一些很重要到情况。
监控weblogic的jvm有一个很好的自带工具,由于weblogic使用自己的jrockit作为jvm,自带一个工具通过在启动参数加-Xmanagement,然后进入到jrockit的bin路径下命令行console启动,可以看到更加细微的jvm的情况,对jvm的调优很好。
这里还是建议一定对jvm的工作原理做一个深入的理解会对你很有帮助,同时了解不同的jrockit的jvm垃圾回收器各自的特点,这些都对weblogic的调优大有帮助。
小结
BEA WebLogic Server 8.1监视的核心在于Java Management Extensions(JMX)规范。简单的理解,WebLogic对每个可以进行管理的资源通过一个或者多个管理Bean来管理,这就是Mbeans,然后JMX代理直接控制可管理资源,提供了管理对象的注册,并将此对象公开给兼容JMX的应用程序。
我们主要关注两种Mbeans:配置Mbeans 与运行时Mbeans.配置
配置Mbeans 用于域针对其资源的配置信息。配置Mbeans被进一步分类为:1)管理(Administration):配置Mbeans位于域的管理服务器上。要修改域的配置,需要在管理服务器上修改适当的管理Mbeans。2)本地配置(Local Configuration):管理Mbeans的本地复制,个别服务器用于提升性能。本地配置Mbeans是不能修改的。
运行时Mbeans 则提供了诸如JVM 内存资源使用状况以及WebLogic 服务器状态等资源的信息快照。当域中的某一资源实例化时(例如Web 应用),相应地就会创建一个Mbeans 实例来收集该资源的信息。
在WebLogic Server 8.1的监视方式中,主要有四种:
通过管理控制台访问监控页面时。实质是通过JMX代理对Mbeans执行Get操作来获得该资源的当前属性值。
通过命令行工具来获取监控信息。实质是通过Java命令直接操纵底层Mbeans。
编程实现自定义的监视。实质是在程序中调用相应的Mbeans来获取信息。
使用第三方软件监视。
下面详细介绍这几种监视方式。
(1)管理控制台监视
通过管理控制台,可以对WebLogic的性能以及运行状况,发布的应用,资源等进行监视。
下面列举部分用来管理WebLogic的监视页面来简要说明管理控制台所提供的监视功能。
服务器->监视->常规,该页面显示了服务器的当前状态。高级选项里还显示了WebLogic 版本,JDK的提供商,版本,操作系统的版本等信息。最后从这个页面,还可以访问JNDI 树、监视活动队列、监视连接以及监视活动套接口。
服务器->监视->常规->监视所有活动队列,执行队列的配置对WebLogic 性能是很重要的,根据经验值,一颗CPU可以配置25-30之间的执行线程。从该页面可以查看到已经分配给队列的执行线程数,当前空闲的线程数,最长等待请求放入队列中的时间,队列中的等待请求数,此队列已处理的请求数等重要信息,这些信息可以作为判断是否需要对执行线程调整的参考。
服务器->监视->性能,从该页面中可以了解WebLogic 服务器性能的基本情况,包括空闲线程数,等待处理的请求数,JVM的内存堆使用状态等。
部署->应用程序->EAR模块->监视,当应用程序部署运行后,可以监视单一组件,如EJB,Servlet等。如上图所示,该页面提供了发布的应用程序中EJB的统计信息,可以有效了解EJB处理请求的效率。
服务->JDBC->连接缓冲池->监视,在控制台中可以监视资源的运行的状态,如JDBC等。该页面提供了JDBC连接缓冲池的统计信息,包括连接缓冲池可包含的最大数据库连接数,当前使用的物理数据库连接数,当前使用的物理数据库连接数等信息。
值得一提的是在控制台监视页面里可能会有一个自定义此视图的选项,使用自定义视图后可以使用自定义的视图,可以包含个人关注的信息,而且可以监视更多的信息。如上图所示,该视图是自定义后的JDBC连接缓冲池监视页面。
控制台上其它的监视页面就不一一列举了,所有的监视页面参考:
http://edocs.bea.com/wls/docs81/adminguide/monitoring.html#1039671
(2)运用命令行工具监视
命令行工具可以使用特殊命令(GET、 SET、CREATE、INVOKE、 DELETE 和 QUERY)直接操纵底层 JMX 基础结构。这使命令行工具可以访问管理控制台所有可用的功能,甚至还为访问某些功能提供了更灵活的方法。
具体运用过程是使用Java命令,调用weblogic.Admin这个java类。在运用该工具时,需要设定环境变量,指定java命令路径及weblogic包的类路径。使用weblogic.Admin工具的语法如下:
java weblogic.Admin [ [-url | -adminurl] [protocol://] listen-address:port] -username username [-password password] COMMAND-NAME arguments
在上面的命令语法中,username和password表示用户名和密码,url表示运行命令的服务器实例的监听地址和监听端口,adminurl表示管理服务器可以检索域中任何服务器实例的本地配置 MBean 或运行时 MBean,COMMAND-NAME表示具体执行的特殊命令(GET、 SET、CREATE、INVOKE、 DELETE 和 QUERY),arguments表示命令的参数。实际运用的一条命令如下:
java weblogic.Admin -username weblogic -password weblogic -url localhost:7001 GET -pretty -type JVMRuntime
需要留意的是最后的命令参数 –type,指定了想获得信息的资源(如果是某个具体的Mbean,使用-mbean 参数,-type是所指定类型的实例的所有 MBean 进行操作),该参数的获取规则是:在WebLogic Server 8.1 API Reference查找 MBean 的接口类,并从类名中删除 MBean 后缀。对于为 weblogic.management.runtime.JDBCConnectionPoolRuntimeMBean 的实例的 MBean,使用 JDBCConnectionPoolRuntime。 对于本地配置 MBean,将 Config 追加到名称中。例如,对于为 weblogic.management.configuration.JDBCConnectionPoolMBean 接口类的实例的本地配置 MBean,使用 JDBCConnectionPoolConfig。对于对应的管理 MBean 实例,使用 JDBCConnectionPool。
具体的命令参考请见:http://edocs.bea.com/wls/docs81/admin_ref/cli.html
上面的图示演示了从javadoc中获取type参数,最后获取相应监视信息的过程
(3)编程Mbean自定义监视
Mbeans实质上是一个java类,那么肯定可以编程使用,于是就可以编程实现自定义监视。
MBeanHome home = (MBeanHome) new
InitialContext().lookup(MBeanHome.LOCAL_JNDI_NAME);
Set pools = home.getMBeansByType("JDBCConnectionPool");
上面的代码片段是对于JDBC连接缓冲池的配置mbean的操纵的核心部分。得到该mbean实例后可以得到各种weblogic能够提供的关于JDBC连接缓冲池配置信息,实现自定义监视。
(4)使用第三方工具监视
BEA WebLogic Server作为一种广泛运用的Java应用服务器,有大量第三方软件可以运用,包括HP-Mercury LoadRunner,QUEST Spotlight for WebLogic Server,Wily's Introscope for WebLogic等,详细的使用方法见其产品文档,在此不再累述。