Sun ONE logo     上一个      目录      索引      下一个     
Sun ONE Application Server 7, Update 1 管理员指南



监视 Sun ONE Application Server

本 module 提供了有关监视的信息,同时介绍了在 Sun ONE Application Server 中使用的简单网络管理协议 (SNMP) 的特征和功能。

本 module 包括以下主题:

关于监视 Sun ONE Application Server

您可以通过收集系统上关键数据点的活动统计数据来监视 Sun ONE Application Server。统计数据显示了服务器处理的请求的数目以及这些请求的处理状况。您可以查看单个虚拟服务器的某些统计数据,也可以查看整个应用程序服务器实例的统计数据。您可以使用 asadmin 公用程序或 SNMP 来监视 Sun ONE Application Server。

本节包括以下主题:

统计数据

大多数 Sun ONE Application Server 应用程序组件和子系统(包括 HTTP 服务器)都会始终启用统计数据的收集,因而不需要任何启用功能。但是,某些统计数据仅当在子系统上明确启用了监视,或仅当启用了相关功能时才会进行收集。这些统计数据包括以下数据点:

  • EJB 方法的统计数据
  • 活动事务
  • 连接(仅当启用了服务质量)
  • DNS(仅当启用了 DNS 高速缓存)

可以通过管理界面启用对应用程序子系统或组件的监视功能,如“监视应用程序组件和子系统”中所述。

如果服务器监视器报告该服务器处理的请求过多,您可能需要调整服务器配置或系统的网络内核。有关调整服务器配置的详细信息,请参见《Sun ONE Application Server Performance Tuning and Sizing Guide》。

SNMP

Sun ONE Application Server 通过它的信息收集工具,使用简单网络管理协议 (SNMP) 提供网络管理信息,该协议用于在网络范围内交换管理和监视信息。称为代理的程序使用 SNMP 监视网络上的各种设备(集线器、路由器、网桥等等)。另一个程序负责从代理处收集数据。由监视操作创建的数据库称为管理信息库 (MIB)。这些数据用于检查网络上的所有设备是否正常运行。

使用 SNMP 只能监视 HTTP 服务器;而使用命令行界面 (CLI) 可以监视所有组件和系统。

有关 SNMP 的详细信息,请参见“关于 SNMP”“设置 SNMP”

监视 HTTP 服务器

默认情况下,HTTP 服务器的监视被启用,这意味着不必专门启用它。HTTP 服务器的监视基于一个 XML 文件,可以作为一个包含三个可监视属性的属性集使用 asadmin 命令进行访问。“可监视的 HTTP 服务器元素”“可监视的 HTTP 服务器属性”描述了该 XML 文件的元素、子元素和属性。



注意

使用 SNMP 只能监视 HTTP 服务器的统计数据。而使用命令行界面可以获得 Sun ONE Application Server 所有子系统(包括 HTTP 服务器)的统计数据。



有关使用 asadmin 的详细信息,请参见“使用命令行界面”

监视应用程序组件和子系统

Sun ONE Application Server 中的某些子系统或组件不需要启用监视,因为系统始终会收集某些相关的统计数据。例如,可以启用或禁用应用程序组件(例如容器)的监视。启用监视时,除了始终收集的统计数据外,还会收集有关所有 EJB 方法的其它统计数据。对 JDBC 连接池的监视始终被启用。连接池在第一次访问时被初始化,您可以在这之后的任何时刻监视相关统计数据。

有关可监视数据点的完整列表,请参见“可监视的属性名”

您可以通过管理界面或命令行界面 (CLI) 为选定的应用程序组件和子系统启用监视。例如,要从 CLI 为 EJB 容器启用监视,请在终端窗口中键入以下命令:

set server1.ejb-container.monitoringEnabled=true
reconfig server1

其中 server1 是实例名。

在管理界面上的“Containers”节点下可以访问相同的功能。

本节包括以下主题:

监视容器子系统

启用 EJB 容器的监视时,将收集与所有实体 bean、状态会话 bean 及无状态会话 bean 的方法相关的统计数据。这些统计数据包括:

  • 错误总数
  • 调用总数
  • 成功总数
  • 以毫秒计的执行时间(对于方法的最后一次调用)

容器子系统的所有其它统计数据始终会被收集。某些监视的数据点包括与以下内容相关的统计数据:

  • 池中无状态 bean 的初始、最小及最大数目
  • 高速缓存中状态会话 bean 和实体 bean 的最小及首选数目
  • 高速缓存中无状态会话 bean 的最小及首选数目
  • 已创建和已破坏的 bean 的数目
  • 其它相关统计数据

监视 ORB 服务

对于 ORB 服务,监视的数据点包括为 ORB 连接和 ORB 线程池收集的统计数据。ORB 统计数据始终会被收集,因此不必为 ORB 服务启用监视。

监视事务服务

对于 Java 事务服务 (JTS) 服务,监视的数据点包括:

  • 完成的事务总数
  • 回滚的事务总数
  • 正在执行的事务总数
  • 正在执行的事务列表

有关详细信息,请参见“使用 CLI 管理事务服务”

服务质量 (QOS)

服务质量是指为服务器实例虚拟服务器类或虚拟服务器设置的性能限制。例如,如果您是 Internet 服务提供商 (ISP),则可能希望根据所提供的带宽收取不同的虚拟服务器费用。您可以在两方面进行限制:带宽大小和连接数目。

Sun ONE Application Server 提供的服务质量信息用于根据以下各项确定服务器在运行时的效率:

  • 启动时间
  • 服务器通信量和通信量对带宽的影响
  • 实时数据与静态数据分析
  • 其它数据元素

有关详细信息,请参见“使用 CLI 管理事务服务”

使用 CLI 提取监视数据

使用 asadmin 命令,您可以通过命令行界面 (CLI) 使用 listget 命令提取监视数据。



注意

set 命令仅用于设置事务服务的监视,如“使用 CLI 管理事务服务”中所述。



本节包括以下主题:

list --monitor 命令

list 命令提供有关当前监视的指定服务器实例名称的应用程序组件和子系统的信息。使用此命令,您可以查看某个服务器实例的可监视组件和子组件。

示例:

asadmin> list --monitor server1

返回以下启用了监视的应用程序组件和子系统列表:

iiop-service
transaction-service
application.converter
application.myApp
http-server

您还可以列出指定的服务器实例中当前所监视的应用程序。当使用 get 命令从某个应用程序中获取特定的监视统计数据时,这会很有用。

示例:

asadmin> list --monitor server1.application

返回:

converter
myApp

有关更复杂的示例,请参见“Petstore 示例”

get --monitor 命令

此命令检索以下监视信息:

  • 组件或子系统中监视的所有属性
  • 组件或子系统中监视的特定属性

如果特定组件或子系统中不存在所请求的属性,将返回一个错误。类似地,如果组件或子系统中所请求的特定属性处于非活动状态,也会返回一个错误。

有关使用 get 命令的详细信息,请参见“CLI 名称映射”

示例 1

尝试获取某个子系统的某个特定属性的所有属性:

asadmin> get --monitor server1.iiop-service.orb.system.orb-connection.*

total-inbound-connections=1
total-outbound-connections=1

示例 2

尝试获取某个 J2EE 应用程序的所有属性:

asadmin> get --monitor server1.application.converter.*

Attribute name(s) not found

该 J2EE 应用程序级别上没有暴露可监视的属性,因此该命令失败。

示例 3

尝试获取某个子系统的某个特定属性:

asadmin> get --monitor server1.transaction-service.inflight-tx

Attribute name = inflight-tx Value = No active transaction found.

示例 4

尝试获取某个子系统属性中的某个未知属性:

asadmin> get --monitor server1.iiop-service.orb.system.orb-connection.bad-name

Could not get the attribute

Execution failed for the command:get --monitor server1.iiop-service.orb-connection.bad-name

CLI 名称映射

Sun ONE Application Server 使用树结构来跟踪可监视的对象。树中的每个节点都具有名称和类型。如果是单元素类型,则任意父节点下只能有一个该类型的节点。有关树中节点类型的详细信息,请参见“可监视的对象类型”

树中的根对象由 Sun ONE Application Server 实例名表示。例如,名为 server1 的实例的根监视对象为:

server1

然后,所有子对象将使用点字符 (.) 作为分隔符进行指定。如果子节点是单元素类型,则只需要使用监视对象类型来指定对象;否则,需要使用 type.name 名称格式来指定对象。

例如,http-server 是一种有效的可监视对象类型,并且是单元素类型。要指定表示实例 server1http-server 的单元素类型子节点,该名称为:

server1.http-server

再比如,application 是一种有效的可监视对象类型,并且是非单元素类型。要指定表示应用程序 Petstore 的非单元素类型子节点,该名称为:

server1.application.petstore

CLI 名称还可以指定可监视对象中的特定属性。例如,http-server 具有一个名为 summary 的可监视属性。以下名称指定了该 summary 属性:

server1.http-server.summary

监视对象所暴露的属性名没有固定的命名规范。

通常情况下您不需要知道要在 CLI 中使用的有效名称,您可以通过使用 list 命令检查可用的可监视对象,也可以使用带有通配符参数的 get 命令则检查任意可监视对象的所有可用属性。

以下示例显示了某些客户机名称映射情况:

Petstore 示例

用户要检查对某方法的调用次数,该方法位于部署在名为 server1 的 Sun ONE Application Server 实例上的 Petstore 应用程序中。这里同时使用了 listget 命令,以访问该方法的所希望的统计数据。

  1. 以多模式调用 CLI。
  2. 设置一些有用的环境变量,以避免使用每个命令时都输入这些变量:
  3. asadmin>export AS_ADMIN_USER=admin AS_ADMIN_PASSWORD=admin123

    asadmin>export AS_ADMIN_HOST=localhost AS_ADMIN_PORT=4848

  4. 列出实例 server1 的可监视组件:
  5. asadmin>list --monitor server1

    输出为:
    iiop-service
    transaction-service
    application.CometEJB
    application.ConverterApp
    application.petstore
    http-server
    resources

    可监视组件列表包括 iiop-servicehttp-server, transaction-serviceresources 以及所有部署(及启用)的应用程序。

  6. 列出 Petstore 应用程序中的可监视子组件(可以用 -m 代替 --monitor):
  7. asadmin>list -m server1.application.petstore

    输出为:
    ejb-module.signon-ejb_jar
    ejb-module.catalog-ejb_jar
    ejb-module.uidgen-ejb_jar
    ejb-module.customer-ejb_jar
    ejb-module.petstore-ejb_jar
    ejb-module.AsyncSenderJAR_jar
    ejb-module.cart-ejb_jar

  8. 列出 Petstore 应用程序的 EJB 模块 sigon-ejb_jar 中的可监视子组件:
  9. asadmin>list -m server1.application.petstore.ejb-module.signon-ejb_jar

    输出为:
    entity-bean.UserEJB
    stateless-session-bean.SignOnEJB

  10. 列出 Petstore 应用程序的 EJB 模块 sigon-ejb_jar 的实体 bean UserEJB 中的可监视子组件:
  11. asadmin>list -m server1.application.petstore.ejb-module.signon-ejb_jar.entity-bean.UserEJB

    输出为:
    bean-method.create0
    bean-method.findByPrimaryKey1
    bean-method.remove2
    bean-method.getUserName3
    bean-method.setPassword4
    bean-method.getPassword5
    bean-method.matchPassword6
    bean-method.remove7
    bean-method.isIdentical8
    bean-method.getEJBLocalHome9
    bean-method.getPrimaryKey10
    bean-pool
    bean-cache

  12. 列出实体 bean UserEJB(位于 Petstore 应用程序的 EJB 模块 sigon-ejb_jar 中)的方法 getUserName3 的可监视子组件:
  13. asadmin>list -m server1.application.petstore.ejb-module.signon-ejb_jar.entity-bean.UserEJB.bean-method.getUserNam e3

    输出为:

    No monitorable entities for element
    server1.application.petstore.ejb-module.signon-ejb_jar.entity-bean.UserEJB.bean-method.getUserNam e3

  14. 该方法没有可监视的子组件。获取方法 getUserName3 的所有可监视的统计数据。
  15. asadmin>get -m server1.application.petstore.ejb-module. signon-ejb_jar.entity-bean.UserEJB.bean-method.getUserName3.*
    method-name = public abstract java.lang.String com.sun.j2ee.blueprints.signon.user.ejb.UserLocal.getUserName()
    total-num-errors = 0
    total-num-success = 2
    execution-time-millis = 1
    total-num-calls = 2

  16. 您也可以获取特定的统计数据,例如执行时间。
  17. asadmin>get -m server1.application.petstore.ejb-module. signon-ejb_jar.entity-bean.UserEJB.bean-method.getUserName3.execution-time-millis
    execution-time-millis = 1

可监视的对象类型

用于监视的对象树包含多个节点。节点是对象树中的特定条目,由它的类型、名称及父节点唯一标识。某些节点类型是单元素类型,这意味着在父节点下只能存在一个该类型的节点。单元素类型的节点并不需要名称。

非单元素类型的节点需要名称。“实例名”列描述了可能的名称空间。

下表按照各种节点类型之间的父子关系描述了树结构并列出了某些节点类型的名称空间。

   监视对象类型 

节点类型

单元素?

叶?

子节点类型

实例名

root

 

 

 

http-server iiop-service
resources
transaction-service application standalone-ejb-module

 

 

http-server

 

 

 

virtual-server
process

 

 

virtual-server

 

 

 

 

 

process

 

 

 

 

 

iiop-service

 

 

 

orb

 

 

orb

 

 

 

orb-connection orb-thread-pool

 

为系统 ORB 保留了 system。所有用户 ORB 都获取一个源自 TCP 端点的名称。

 

orb-connection

 

 

 

 

 

orb-thread-pool

 

 

 

 

 

resources

 

 

 

jdbc-connection-pool

 

 

jdbc-connection-pool

 

 

 

 

这些名称与用户创建连接池时指定的名称相同。

 

transaction-service

 

 

 

 

 

application

 

 

 

ejb-module

 

server.xml 中注册的应用程序的名称。

 

ejb-module

 

 

 

stateless-session-bean stateful-session-bean entity-bean message-driven-bean

 

EJB 模块的名称。它源自 EJB JAR 名称。

 

standalone-ejb-module

 

 

 

stateless-session-bean stateful-session-bean entity-bean message-driven-bean

 

server.xml 中注册的独立 EJB 模块的名称。

 

stateless-session-bean

 

 

 

bean-pool
bean-method

 

部署描述符中的 bean 名称。

 

stateful-session-bean

 

 

 

bean-cache
bean-method

 

部署描述符中的 bean 名称。

 

entity-bean

 

 

 

bean-cache
bean-pool
bean-method

 

部署描述符中的 bean 名称。

 

message-driven-bean

 

 

 

bean-pool
bean-method

 

部署描述符中的 bean 名称。

 

bean-pool

 

 

 

 

 

bean-cache

 

 

 

 

 

bean-method

 

 

 

 

对于消息驱动的 bean,其名称是 onMessage,它是方法名后跟一个表示其它企业 bean 的数字后缀(该后缀用来唯一标识过载的方法。)

 

可监视的属性名

并非每个可监视对象都需要暴露其可监视属性。某些对象只是用来编组其它对象。对于 Sun ONE Application Server,除了一个 http-server 节点外,只有树的叶节点具有属性。http-server 节点类型既具有子节点,也具有属性。下表列出了各种节点的可能的可监视属性名。

   http-server

属性名

数据类型

说明

summary

 

字符串(具有格式)

 

HTTP 服务器摘要。包括虚拟服务器和进程。

注意:有关具有格式的字符串中暴露了哪些数据的详细信息,请参见“HTTP 服务器的可监视对象”一节。

 

   virtual-server

属性名

数据类型

说明

<vs-id>

 

字符串(具有格式)

 

虚拟服务器信息。每个应用程序服务器实例都可能有一个或多个虚拟服务器。可以从 http-server 的摘要 (summary ) 属性获取虚拟服务器 ID 的列表。可以使用 server1.http-server.virtual-server.<vs-id> 格式的 get 命令参数查找特定虚拟服务器的统计数据。可以使用 server1.http-server.virtual-server.* 格式的 get 命令参数查找所有虚拟服务器的统计数据。

注意:有关具有格式的字符串中暴露了哪些数据的详细信息,请参见“HTTP 服务器的可监视对象”一节。

 

   process

属性名

数据类型

说明

<pid>

 

字符串(具有格式)

 

进程信息。每个应用程序服务器实例都有一个进程。可以从 http-server 的摘要 (summary ) 属性获取进程 ID。可以使用 server1.http-server.process.<pid> 格式的 get 命令参数获取进程的统计数据。

注意:有关具有格式的字符串中暴露了哪些数据的详细信息,请参见“HTTP 服务器的可监视对象”一节。

 

   orb-connection 

属性名

数据类型

说明

total-inbound-connections

 

整数

 

至 ORB 的入站连接总数。

 

total-outbound-connections

 

整数

 

自 ORB 的出站连接总数。 

 

   orb-thread-pool  

属性名

数据类型

说明

thread-pool-size

 

整数

 

ORB 线程池中的线程总数。

 

waiting-thread-count

 

整数

 

等待工作到来的线程池线程数。

 

   jdbc-connection-pool 

属性名

数据类型

说明

total-threads-waiting

 

整数

 

等待 JDBC 连接的线程总数。

 

total-outbound-connections

 

整数

 

JDBC 连接验证失败总数。

 

total-connections-timed-out

 

整数

 

超时的连接请求总数。

 

   transaction-service 

属性名

数据类型

说明

total-tx-completed

 

整数

 

完成的事务总数。

 

total-tx-rolled-back

 

整数

 

回滚的事务总数。

 

total-tx-inflight

 

整数

 

正在执行(活动)的事务总数。

 

isFrozen

 

字符串

 

事务系统是否被冻结(True 或 False)?

 

inflight-tx

 

字符串(具有格式)

 

正在执行的事务列表。

 

   bean-pool 

属性名

数据类型

说明

max-pool-size

 

整数

 

池中 bean 实例的最大数目。 

 

steady-pool-size

 

整数

 

池中通常保留的 bean 实例数。首次创建池时,池的总装大小等于 steady-pool-size。从池中删除实例时,池将被异步补充,所以池的大小将等于或大于 steady-pool-size

 

pool-resize-quantity

 

整数

 

池增长到 max-pool-size 或缩小到 steady-pool-size  的增量。

 

idle-timeout-in-seconds

 

整数

 

定义池清除线程的执行频率。检查池的当前大小是否大于 steady-pool-size。如果大于,则删除 pool-resize-quantity 元素;如果小于,则增加 pool-resize-quantity,但不会超过 min (current-pool-size+pool - resize-quantity, max-pool-size)。只有当对象在 pool-idle-timeout-in-seconds 时间内未被访问时,才能删除该对象。 

 

num-beans-in-pool

 

整数

 

池中可用 bean 的数目。 

 

num-threads-waiting

 

整数

 

等待空闲 bean 的线程数。

 

total-beans-created

 

整数

 

到目前为止创建的 bean 的数目。 

 

total-beans-destroyed

 

整数

 

到目前为止破坏的 bean 的数目。

 

jms-max-messages-load

 

整数

 

为使消息驱动的 bean 提供服务而一次加载到 JMS 会话中的最大消息数。默认值为 1。仅适用于消息驱动的 bean 的池。

 

   bean-cache 

属性名

数据类型

说明

cache-resize-quantity (resize-quantity)

 

整数

 

当高速缓存中 bean 的数目等于 max-cache-size 时(即发生高速缓存溢出时),高速缓存的大小所减少的数量。

 

cache-misses

 

整数

 

用户请求未在高速缓存中找到 bean 的次数。

 

idle-timeout-in-seconds

 

整数

 

所安排的高速缓存清除器线程的执行频率。此清除器线程将检查高速缓存中的所有 bean 并挂起那些在 cache-idle-timeout-in-seconds 时间内没有被访问的 bean。

 

cache-hits

 

整数

 

用户请求在高速缓存中找到某条目的次数。

 

total-beans-in-cache

 

整数

 

高速缓存中 bean 的数目。这是高速缓存的当前大小。

 

max-beans-in-cache

 

整数

 

高速缓存中可保留的 bean 的最大数目,超过此值将发生高速缓存溢出。

 

num-passivations

 

整数

 

被挂起的数目。仅适用于状态会话 bean。

 

num-passivation-errors

 

整数

 

挂起时的错误数。仅适用于状态会话 bean。

 

num-expired-sessions-removed

 

整数

 

清除线程删除的过期会话数。仅适用于状态会话 bean。

 

num-passivation-success

 

整数

 

成功完成挂起的次数。仅适用于状态会话 bean。

 

   bean-method 

属性名

数据类型

说明

method-name

 

字符串

 

方法的全限定名称。

 

total-num-calls

 

整数

 

方法被调用的次数。如果启用了 EJB 容器的监视,则会为无状态会话 bean、状态会话 bean 以及实体 bean 收集此数据;如果启用了消息驱动的 bean 容器的监视,则会为消息驱动的 bean 收集此数据。

 

total-num-errors

 

整数

 

方法执行时出现异常的次数。如果在 EJB 设置下启用了监视,则会为无状态会话 bean、状态会话 bean 以及实体 bean 收集此数据;如果在 MDB 设置下启用了监视,则会为消息驱动的 bean 收集此数据。

 

total-num-success

 

整数

 

方法成功执行的次数。如果启用了 EJB 容器的监视,则会为无状态会话 bean、状态会话 bean 以及实体 bean 收集此数据;如果启用了容器的监视,则会为消息驱动的 bean 收集此数据。

 

execution-time-millis

 

长型

 

最后一次成功运行此方法时此方法的执行时间。如果启用了 EJB 容器的监视,则会为无状态会话 bean、状态会话 bean 以及实体 bean 收集此数据;如果启用了容器的监视,则会为消息驱动的 bean 收集此数据。

 

HTTP 服务器的可监视对象

HTTP 服务器的可监视属性名 summary 将显示 Server 元素的属性值及其子元素的摘要,包括每个子元素的数目及每个子元素的属性值。HTTP 服务器的 virtual-server 属性将显示 VirtualServer 元素的属性值及其每个子元素的详细资料。process 属性将显示 Process 元素的属性值及其每个子元素的详细资料。

要启用 NSAPI 性能探查并获取 ProfileProfileBucket 元素的统计数据,请参见《Sun ONE Application Server Developer's Guide to NSAPI》。

有关如何使用监视统计数据进行性能优化的信息,请参见《Sun ONE Application Server Performance and Tuning Guide》。

可监视的 HTTP 服务器元素

下表列出了 HTTP 服务器的可监视元素。

   可监视的 HTTP 服务器元素 

元素名

子元素

说明

Server

 

ConnectionQueue
ThreadPool
Profile
Process
VirtualServer

 

服务器实例。

 

ConnectionQueue

 

 

该队列中的请求优先于正在被服务的请求。Sun ONE Application Server 7 中只有一个连接队列。

 

ThreadPool

 

 

init.conf 文件中定义的线程池。

 

Profile

 

 

init.conf 文件中定义的 NSAPI 性能概要桶。

 

Process

 

ConnectionQueueBucketThreadPoolBucket
DnsBucket
DnsBucket
KeepaliveBucket
CacheBucket
Thread

 

服务器实例中的单个服务器进程。

 

ConnectionQueueBucket

 

 

跟踪与特定 ConnectionQueue 有关的统计数据。

 

ThreadPoolBucket

 

ThreadPoolBucket

 

跟踪与特定 ThreadPool 有关的统计数据。

 

DnsBucket

 

 

跟踪 DNS 统计数据。

 

KeepaliveBucket

 

 

跟踪保持活动(永久连接)的统计数据。

 

CacheBucket

 

 

跟踪文件高速缓存 (NSFC) 统计数据。

 

Thread

 

RequestBucket ProfileBucket

 

描述了某个请求处理线程。

 

VirtualServer

 

RequestBucket
ProfileBucket

 

描述了某个虚拟服务器。

 

RequestBucket

 

 

跟踪与请求相关的统计数据。

 

ProfileBucket

 

 

跟踪与 Profile 元素有关的统计数据。

 

可监视的 HTTP 服务器属性

下表列出了 HTTP 服务器的可监视属性。

   Server 

属性名

说明

Id

 

 

服务器实例 ID(例如,server1)。

 

VersionServer

 

 

包含 Sun ONE Application Server 版本的字符串。

 

TimeStarted

 

GMT

 

此服务器实例的启动时间。

 

SecondsRunning

 

 

此服务器实例启动后的运行时间(秒数)。

 

TicksPerSecond

 

 

每秒的周期数。此值由系统决定。

 

MaxProcs

 

 

最大进程数。

 

MaxThreads

 

 

最大处理线程数。

 

MaxVirtualServers

 

 

所跟踪的虚拟服务器的最大数目。

 

FlagProfilingEnabled

 

0(关),1(开)

 

指示是否启用了 NSAPI 性能探查(启用时为 1)。

 

FlagVirtualServerOverflow

 

0(否),1(是)

 

指示是否配置了多于 MaxVirtualServers 的虚拟服务器(多于时为 1)。如果此属性设置为 1,则并非所有虚拟服务器的统计数据都被跟踪。

 

LoadMinuteAverage

 

 

1 分钟内的负载平均值。

 

Load5MinuteAverage

 

 

5 分钟内的负载平均值。

 

Load15MinuteAverage

 

 

15 分钟内的负载平均值。

 

RateBytesTransmitted

 

每秒字节数

 

某个服务器定义的时间间隔内数据的传输速率。如果此信息不可用,则值为 0。

 

RateBytesReceived

 

每秒字节数

 

某个服务器定义的时间间隔内数据的接收速率。如果此信息不可用,则值为 0。

 

   ConnectionQueue 

属性名

说明

Id

 

 

连接队列 ID。

 

   ThreadPool 

属性名

说明

Id

 

 

线程池 ID。

 

名称

 

 

线程池的符号名称。

 

   Profile 

属性名

说明

Id

 

 

NSAPI 性能概要桶 ID。

 

名称

 

 

NSAPI 性能概要桶的符号名称。

 

说明

 

 

NSAPI 性能概要桶的说明。

 

   Process 

属性名

说明

Pid

 

 

唯一标识此进程的操作系统进程标识符。

 

Mode

 

unknown
active

 

此进程处于活动状态时显示“active”。

 

TimeStarted

 

GMT

 

此进程的启动时间。

 

CountConfigurations

 

 

某配置被装入的次数。如果此信息不可用,则值为 0。

 

SizeVirtual

 

千字节

 

此进程使用的虚拟内存大小。

 

SizeResident

 

千字节

 

此进程使用的驻留内存大小。

 

FractionSystemMemoryUsage

 

 

此进程使用的系统内存部分。

 

   ConnectionQueueBucket 

属性名

说明

ConnectionQueue

 

 

ConnectionQueue 元素的 ID。

 

CountTotalConnection

 

 

已接受的新连接总数。

 

CountQueued

 

 

当前排队的连接数。

 

PeakQueued

 

 

队列中同时存在的最大连接数。

 

MaxQueued

 

 

队列可容纳的最大连接数。

 

CountOverflow

 

 

队列太满而无法容纳连接的次数。

 

CountTotalQueued

 

 

排队的连接总数。某个给定连接可能被多次排队,因此 CountTotalQueued 可能大于或等于 CountTotalConnections

 

TicksTotalQueued

 

 

连接在队列中花费的周期总数。周期是系统决定的时间单位,请参见 TicksPerSecond

 

   ThreadPoolBucket 

属性名

说明

Thread-pool

 

 

ThreadPool 元素的 ID。

 

CountThreadsIdle

 

 

当前处于空闲状态的请求处理线程数。

 

CountThreads

 

 

请求处理线程的数目。

 

MaxThreads

 

 

可同时存在的最大请求处理线程数。

 

CountQueued

 

 

排队等候此线程池处理的请求数。

 

PeakQueued

 

 

队列中同时存在的最大请求数。

 

MaxQueued

 

 

队列可容纳的最大请求数。

 

   DnsBucket 

属性名

说明

FlagCacheEnabled

 

0(关),1(开)

 

指示是否启用了 DNS 高速缓存(启用时为 1)。

 

CountCacheEntries

 

 

当前高速缓存中的 DNS 条目数。

 

MaxCacheEntries

 

 

高速缓存可容纳的最大 DNS 条目数。

 

CountCacheHits

 

 

DNS 高速缓存查找成功的次数。

 

CountCacheMisses

 

 

DNS 高速缓存查找失败的次数。

 

FlagAsyncEnabled

 

0(关),1(开)

 

指示是否启用了异步 DNS 查找(启用时为 1)。

 

CountAsyncNameLookups

 

 

已执行的异步 DNS 名称查找总数。

 

CountAsyncAddrLookups

 

 

已执行的异步 DNS 地址查找总数。

 

CountAsyncLookupsInProgress

 

 

当前正在执行的异步 DNS 查找总数。

 

   KeepaliveBucket 

属性名

说明

CountConnections

 

 

当前处于保持活动模式的连接数。

 

MaxConnections

 

 

同时保持活动的最大连接数

 

CountHits

 

 

处于保持活动模式的连接随后进行了有效请求的总次数。

 

CountFlushes

 

 

服务器关闭保持活动的连接的次数。

 

CountTimeouts

 

 

保持活动的连接超时的次数。

 

SecondsTimeouts

 

 

超时的秒数,之后服务器将关闭空闲的保持活动的连接。

 

CountRefusals

 

 

服务器拒绝保持活动的连接的次数。

 

   CacheBucket 

属性名

说明

FlagEnabled

 

0(关),1(开)

 

指示是否启用了文件高速缓存(启用时为 1)。

 

SecondsMaxAge

 

秒数

 

文件高速缓存条目的最长寿命。

 

CountEntries

 

 

文件高速缓存中的当前条目数。

 

MaxEntries

 

 

文件高速缓存可以同时容纳的最大高速缓存条目数。

 

CountOpenEntries

 

 

与打开的文件关联的条目数。

 

MaxOpenEntries

 

 

文件高速缓存可以同时容纳的与打开的文件关联的高速缓存条目的最大数目。

 

SizeHeapCache

 

字节数

 

高速缓存的文件内容使用的堆的大小。

 

MaxHeapCacheSize

 

字节数

 

文件高速缓存用于高速缓存的文件内容的最大堆大小。

 

SizeMmapCache

 

字节数

 

内存映射的文件内容使用的地址空间大小。

 

MaxMmapCacheSize

 

字节数

 

文件高速缓存用于内存映射的文件内容的最大地址空间大小。

 

CountHits

 

 

高速缓存条目查找成功的次数。

 

CountMisses

 

 

高速缓存条目查找失败的次数。

 

CountInfoHits

 

 

文件信息查找成功的次数。

 

CountInfoMisses

 

 

文件信息查找失败的次数。

 

CountContentHits

 

 

内容查找成功的次数。

 

CountContentMisses

 

 

内容查找失败的次数。

 

   Thread 

属性名

说明

Mode

 

unknown、idle、DNS、request、processing、response、updating

 

线程最后的已知状态。

 

TimeStarted

 

GMT

 

此线程的启动时间。

 

ConnectionQueue

 

 

线程正在服务的 ConnectionQueue 的 ID。

 

   VirtualServer 

属性名

说明

Id

 

 

虚拟服务器 ID。

 

Mode

 

unknownactive

 

此虚拟服务器处于活动状态时显示“active”。

 

Hosts

 

 

此虚拟服务器所服务的软件虚拟服务器主机名(例如,www.foo.com foo.com foo.isp.com)。

 

Interfaces

 

 

为其配置了该虚拟服务器的接口(监听器)(例如,192.168.1.2:80 192.168.1.2:443)。

 

   RequestBucket 

属性名

说明

CountRequests

 

 

已服务的请求数。

 

CountBytesReceived

 

 

收到的字节数。如果此信息不可用,则值为 0。

 

CountBytesTransmitted

 

 

传输的字节数。如果此信息不可用,则值为 0。

 

RateBytesTransmitted

 

每秒字节数

 

某个服务器定义的时间间隔内数据的传输速率。如果此信息不可用,则值为 0。

 

MaxByteTransmissionRate

 

 

某个服务器定义的时间间隔内数据的最大传输速率。如果此信息不可用,则值为 0。

 

CountOpenConnections

 

 

打开的连接的数目。如果此信息不可用,则值为 0。

 

MaxOpenConnections

 

 

打开的连接的最大数目。如果此信息不可用,则值为 0。

 

Count2xx

 

 

已发送的 200 级响应的数目。

 

Count3xx

 

 

已发送的 300 级响应的数目。

 

Count4xx

 

 

已发送的 400 级响应的数目。

 

Count5xx

 

 

已发送的 500 级响应的数目。

 

CountOther

 

 

已发送的非 200、300、400 或 500 级响应的数目。

 

Count200

 

 

已发送的 200 级响应的数目。

 

Count302

 

 

已发送的 302 级响应的数目。

 

Count304

 

 

已发送的 304 级响应的数目。

 

Count400

 

 

已发送的 400 级响应的数目。

 

Count401

 

 

已发送的 401 级响应的数目。

 

Count403

 

 

已发送的 403 级响应的数目。

 

Count404

 

 

已发送的 404 级响应的数目。

 

Count503

 

 

已发送的 503 级响应的数目。

 

   ProfileBucket 

属性名

说明

Profile

 

 

Profile 元素的 ID。

 

Countcalls

 

 

NSAPI SAF 的调用次数。

 

CountRequests

 

 

已处理的请求数。

 

TicksDispatch

 

 

分发请求花费的周期数。周期是系统决定的时间单位,请参见 TicksPerSecond

 

TicksFunction

 

 

在 NSAPI SAF 中花费的周期数。周期是系统决定的时间单位,请参见 TicksPerSecond

 

使用 CLI 管理事务服务

您可以使用 set 命令管理要为 JTS 监视的统计数据。

示例 1

要将事务添加到回滚列表中(这将导致指定事务的回滚),请按以下格式发出 set 命令:

set --monitor server1.transaction-service.rollback-list=txnid1

示例 2

要冻结事务服务,请按以下格式发出 set 命令:

set --monitor server1.transaction-service.freeze=true

下表描述了可以监视以便为 JTS 收集统计数据的属性。这些属性可以按照“CLI 名称映射”中描述的规则通过命令行进行设置。

有关 Java 事物服务的详细信息,请参见使用事务服务

使用 HTTP 服务质量

以下设置控制了通信量的计算方式以及带宽的重新计算频率:

  • 重新计算时间间隔 � 指示带宽的计算频率(毫秒)。
  • 公制时间间隔 � 数据可以用于通信量计算的时间段。

在管理界面中,您可以为服务器实例或虚拟服务器的某个类启用这些服务器或类级别的设置。也可以为单独的虚拟服务器覆盖这些设置。

本节包括以下主题:

服务质量示例

以下示例显示了如何收集并计算服务质量信息。

  • 服务器的公制时间间隔为 30 秒。
  • 服务器在 0 秒启动。
  • 在 1 秒时,至/自该服务器的 HTTP 连接产生了 5000 字节的通信量。
  • 之后没有进行更多连接。在 30 秒时,最后 30 秒内的总通信量为 5000 字节。
  • 在 32 秒时,在 1 秒时获得的通信量采样数据被放弃,因为已经超过了 30 秒的公制时间间隔。现在,最后 30 秒的总通信量为 0。

重新计算时间间隔的工作方式与此类似。服务器的重新计算时间间隔为 100 毫秒。

我们继续前面的示例,每隔 100 毫秒重新计算一次带宽。该计算以通信量和公制时间间隔为基础。

  • 在 0 秒时,将首次计算带宽。总通信量为 0,除以 30 秒的公制时间间隔,得出带宽为 0。
  • 在 1 秒时,将第 10 次计算带宽(1000 毫秒/100 毫秒)。总通信量为 5000 字节,除以 30 秒,得出带宽为 5000/30 = 166 字节/秒。
  • 在 30 秒时,将第 300 次计算带宽。总通信量为 5000 字节,除以 30 秒,得出带宽为 5000/30 = 166 字节/秒。
  • 在 32 秒时,将第 320 次计算带宽。现在通信量为 0(因为产生通信量的那次连接发生的时间太早,所以不能计算在内),除以 30 秒,得出带宽为 0 字节/秒。

配置服务质量 (QOS)

通过管理界面可以配置服务器实例或虚拟服务器的类的服务质量。



注意

要强制服务质量设置,您还必须在 obj.conf 文件中设置服务器应用程序功能 (SAF),如“obj.conf 文件要求的更改”中所述。



要配置服务质量,请执行以下步骤:

  1. 在左侧窗格中选择“App Server Instances”节点。
  2. 展开服务器实例节点以显示“HTTP Server”节点。
  3. 单击“HTTP Server”节点以显示“QOS”选项卡。
  4. 单击“QOS”选项卡。
  5. 以下页面显示了服务质量的常规设置,下面还有一个“Properties”按钮。

   虚拟服务器实例“QOS”选项卡
HTTP 服务器实例中的“QOS”(服务质量)选项卡图示。

  1. 要启用此 HTTP 服务器的服务质量,请单击“QOS Enabled”。
  2. 注意:默认情况下,服务质量被禁用。启用服务质量会稍微增加服务器的开销。

  3. 指定“QOS Metrics Interval”。
  4. 公制时间间隔是在服务器通信量计算过程中采样数据的时间间隔(秒)。默认值为 30 秒。

    如果您的站点通常要传输大量文件,请为此字段设置一个较大的值(几分钟或更长)。如果公制时间间隔较短,大量文件的传输可能会占用所允许的所有带宽。如果您强制了最大带宽设置,这将导致连接被拒绝。由于带宽是按公制时间间隔均分的,因此较长的时间间隔可以缓和由大量文件引起的高峰通信量。

    如果带宽限制比可用带宽低很多(例如,带宽限制为 1 MB/秒,但是与主干的连接为 1 GB/秒),则应缩短公制时间间隔。

    注意:如果要传输大量静态文件,而带宽限制比可用带宽低很多,则必须决定调整哪种状况,因为这两个问题所需的解决方案正好是相反的。

  5. 指定“QOS Recompute Time Interval”。
  6. 重新计算时间间隔是所有服务器、类及虚拟服务器的每次带宽计算之间的毫秒数。默认值为 100 毫秒。

  7. 指定“Bandwidth Limit”。
  8. 这是服务器实例的最大带宽限制(字节/秒)。它在某种程度上与 QOS 公制时间间隔相互影响。

  9. 选择是否强制最大带宽设置。
  10. 如果选择强制最大带宽,当服务器达到其带宽限制时,额外的连接将被拒绝。

    如果没有强制最大带宽,当超过最大值时,服务器将在事件日志中记录一条消息。

  11. 指定连接限制。
  12. 这是所处理的并行请求数。

  13. 选择是否强制连接限制设置。
  14. 如果选择强制最大连接数,当到服务器达到其最大连接数目时,额外的连接将被拒绝。如果没有强制最大连接数,当超过最大值时,服务器将在事件日志中记录一条消息。

  15. (可选)。如果要为服务质量指定附加的“名称-值”对属性,请单击“Properties”按钮。
  16. 有关服务质量属性的所允许的“名称-值”对列表,请参见联机帮助。

  17. 单击“Save”,提交对服务器实例所做的更改。
  18. 访问左侧窗格中“App Server Instances”下您的服务器实例,然后单击“Apply Changes”。

必须对 obj.conf 文件进行的更改

要强制服务质量,您必须在 obj.conf 文件中包含指令以调用以下服务器应用程序功能 (SAF):

  • AuthTrans qos-handler
  • Error qos-error

要正常工作,qos-handler AuthTrans 指令必须是在默认对象中配置的第一个 AuthTrans。服务质量处理程序的作用是检查虚拟服务器、虚拟服务器类以及全局服务器的当前统计数据并通过返回错误来强制限制。Sun ONE Application Server 包含一个称为 qos-handler 的内置样例服务质量处理程序 SAF。当达到限制时,此 SAF 将进行记录并向服务器返回一个 503 Server busy 错误,以便由 NSAPI 处理。

Sun ONE Application Server 还包含一个称为 qos-error 的内置样例错误 SAF,它将返回一个错误页面,说明引起 503 错误的限制以及触发该限制的统计数据的值。

有关这些 SAF 以及如何使用它们的详细信息,请参见《Sun ONE Application Server Developer's Guide to NSAPI》。

服务质量的已知限制

使用服务质量功能时,请记住以下限制:

  • 服务质量功能仅测量应用程序级别的 HTTP 带宽。由于以下多种原因,HTTP 带宽可能与实际的 TCP 网络带宽不同:
    • 如果启用了 SSL,握手和客户机证书交换将增大通信量,但是不会被测量。
    • 如果单向或双向启用了块编码,块层将删除块消息头,并且块消息头不会计入到通信量中。其它消息头或协议项将被计入到通信量中。

  • 服务质量功能不能精确测量 PR_TransmitFile 调用的通信量。对于诸如 PR_Send()/net_writePR_Recv()/net_read 等基本 I/O 操作,带宽管理器可以快速计算出传输的数据,因为在一个系统调用中传输的字节数通常即是缓冲区的大小,并且 I/O 调用会快速返回。这非常适用于测量动态内容应用程序的即时带宽。但是,因为 PR_TransmitFile 传输的数据量仅在传输结束时才会知道,所以在传输完成前无法进行测量。
  • 如果 PR_TransmitFile 很短,则服务质量功能将能够充分执行。但是,如果 PR_TransmitFile 很长,例如在拨号用户下载长文件的情况下,传输的全部数据量将在完成时计算。当带宽管理器在下一个重新计算时间间隔开始后重新计算带宽时,由于最近发生的这一较大的 PR_TransmitFile,计算的带宽将显著增加。这种状况可能导致服务器拒绝所有请求,直至下一个公制时间间隔。那时带宽管理器将使该传输文件操作过期(因为它发生的时间已经太早),从而使带宽值回落。如果您的站点通常要下载很长的静态文件,您应当增加原来默认为 30 秒的公制时间间隔。

  • 计算的带宽始终是一个近似值,因为它不是即时测量的,而是在一段时间内以固定的时间间隔计算的。例如,如果公制时间间隔是默认的 30 秒,而服务器空闲了 29 秒,然后在下一秒中,客户机有可能在 1 秒内使用了 30 倍的带宽限制。
  • 无论何时动态重新配置了服务器,都将丢失服务质量带宽统计数据。此外,服务质量限制在具有基于较早的、非活动配置的连接的线程中不会被强制,因为带宽管理器线程仅计算活动配置的带宽统计数据。还有一种潜在可能,即长时间未关闭其套接字并保持活动(从而服务器没有使其超时)的客户机在动态重新配置服务器后不会再受服务质量限制的约束。
  • 虚拟服务器的并行连接计算间隔与虚拟服务器类和全局服务器实例的计算间隔不同。 单个虚拟服务器的连接计数器在请求被分析并路由到虚拟服务器后会立即自动递增,而在该请求的响应处理结束时会自动减少。这意味着虚拟服务器的连接统计数据在任意时刻都是准确的。
  • 但是,虚拟服务器类和全局服务器实例的连接统计数据不能即时更新。它们按照每个重新计算时间间隔由带宽管理器线程更新。虚拟服务器类的连接数是该类的所有虚拟服务器上的连接总数;全局服务器实例的连接数是所有虚拟服务器类上的连接总数。

    由于这些值的计算方式,虚拟服务器的连接数始终是正确的,如果为该连接数设置一个强制限制,则永远也不能超过该限制。虚拟服务器类和服务器实例的值则不会如此准确,因为它们是按照一定的时间间隔计算的。

关于 SNMP

简单网络管理协议 (SNMP) 是用于在网络范围内交换管理信息和监视信息的协议。使用 SNMP,数据可以在被管理的设备和网络管理站 (NMS) 之间传输。被管理的设备可以是运行 SNMP 的任何设备:主机、路由器、HTTP 服务器以及网络上的其它服务器。

本节包括以下主题:

网络管理站 (NMS)

网络管理站 (NMS) 是用于远程管理某特定网络的计算机。通常,NMS 软件将提供一个图形界面以显示收集的数据,或者使用该数据确保服务器在指定的公差范围内运行。

NMS 通常是安装有一个或多个网络管理应用程序的功能强大的工作站。网络管理应用程序(例如 HP OpenView)以图形方式显示有关被管理设备(例如 HTTP 服务器)的信息。例如,它可能显示了您的企业中已打开或关闭的服务器,或者收到的错误信息的数量和类型。将 SNMP 与 Sun ONE Application Server 一起使用时,这些信息将通过使用以下两种代理在 NMS 和服务器之间传输:子代理和主代理。

子代理收集在各个域中运行的服务器实例的信息并将信息传递给主代理。每个 Sun ONE Application Server 安装都有一个主代理和一个子代理。



注意

对 SNMP 配置进行任何更改后,必须单击“Apply”按钮,然后重新启动 SNMP 子代理。



主代理 在各个子代理和 NMS 之间交换信息。主代理随 Sun ONE Application Server 一起安装。

您可以在一台主机上安装多个子代理,但是只能安装一个主代理。例如,如果在同一台主机上安装了 Sun ONE Directory Server、Sun ONE Application Server 及 Sun ONE Messaging Server,则每个服务器的子代理将与同一个主代理通信。

NMS 将从服务器请求信息,或者更改存储在服务器 MIB 中的变量的值。例如:

  1. NMS 将消息发送给管理服务器主代理。消息可能是数据请求(一条 GET 消息),也可能是一条指示在 MIB 中设置变量的指令(一条 SET 消息)。
  2. 主代理将消息转发给相应的子代理。
  3. 子代理将检索数据或更改 MIB 中的变量。
  4. 子代理将数据或状态报告给主代理,然后主代理将消息(一条 GET 消息)转发回 NMS。
  5. NMS 通过它的网络管理应用程序以文字或图形方式显示该数据。

管理信息库 (MIB) 对象

Sun ONE Application Server 存储了与管理和监视网络范围内的信息有关的变量。主代理可以访问的变量称为被管理对象。这些对象在称为管理信息库 (MIB) 的树状结构中定义。MIB 提供了对 HTTP 服务器的网络配置、状态及统计数据的访问。使用 SNMP,您可以通过网络管理工作站 (NMS) 查看这些信息。

MIB 树的顶层显示出 Internet 对象标识符具有以下子树:

  • directory (1)
  • mgmt (2)
  • experimental (3)
  • private (4)

private (4) 子树包含 enterprises (1) 节点。enterprises (1) 节点中的每个子树都被分配给一个单独的企业,企业是注册有自己特定 MIB 扩展的组织。然后企业可以在其子树下创建特定产品的子树。由企业创建的 MIB 位于 enterprises (1) 节点下。

每个 Sun ONE Application Server 子代理都提供了一个用于 SNMP 通信的 MIB。服务器通过发送包含这些变量的消息(或陷阱)将重要事件报告给 NMS。NMS 可以查询服务器的 MIB 以获取数据。

每个 Sun ONE Application Server 都有其自己的 MIB,该 MIB 位于 install_dir/lib 下。

Sun ONE Application Server 的 MIB 是一个称为 appserv.mib 的文件。此 MIB 包含与 Sun ONE Application Server 的网络管理有关的各种变量的定义。

Sun ONE Application Server MIB 具有一个

appserver 1 (as appserver7 OBJECT IDENTIFIER ::= {appserver 1 }) 对象标识符,它位于 install_dir/lib 目录下。

您可以使用 Sun ONE Application Server MIB 查看有关 Sun ONE Application Server 的管理信息并实时监视服务器。下表列出并描述了存储在 appserv.mib 文件中的被管理对象。

   appserv.mib 被管理对象和说明 

被管理对象

说明

iwsCpuID

 

CPU 标识符。

 

iwsCpuIdleTime

 

CPU 空闲时间。

 

iwsCpuKernelTime

 

CPU 内核时间。

 

iwsCpuTable

 

Sun ONE Application Server CPU。

 

iwsCpuUserTime

 

CPU 用户时间。

 

iwsInstanceTable

 

Sun ONE Application Server 实例。

 

iwsInstanceId

 

服务器实例标识符。

 

iwsInstanceVersion

 

字符串,例如 SunONE-ApplicationServer-Enterprise/7 BB1-01/24/2001 17:15 (SunOS DOMESTIC)

 

iwsInstanceDescription

 

服务器实例的说明。

 

iwsInstanceOrganization

 

负责服务器实例的组织。

 

iwsInstanceContact

 

负责服务器实例的人员的联系信息。

 

iwsInstanceLocation

 

服务器的位置。

 

iwsInstanceStatus

 

服务器实例的状态。

 

iwsInstanceUptime

 

服务器已经运行的时间。

 

iwsInstanceDeathCount

 

服务器实例进程关闭的次数。

 

iwsInstanceRequests

 

服务器实例处理的请求数。

 

iwsInstanceInOctets

 

服务器实例接收的八位位组数。如果此信息不可用,将显示 0。

 

iwsInstanceOutOctets

 

服务器实例传输的八位位组数。如果此信息不可用,将显示 0。

 

iwsInstanceCount2xx

 

服务器实例发出的 200 级(成功)响应的数目。

 

iwsInstanceCount3xx

 

服务器实例发出的 300 级(重定向)响应的数目。

 

iwsInstanceCount4xx

 

服务器实例发出的 400 级(客户机错误)响应的数目。

 

iwsInstanceCount5xx

 

服务器实例发出的 500 级(服务器错误)响应的数目。

 

iwsInstanceCountOther

 

服务器实例发出的其它(非 2xx、3xx、4xx 或 5xx)响应的数目。

 

iwsInstanceCount200

 

服务器实例发出的 200(成功)响应的数目。

 

iwsInstanceCount302

 

服务器实例发出的 302(暂时移动)响应的数目。

 

iwsInstanceCount304

 

服务器实例发出的 304(未修改)响应的数目。

 

iwsInstanceCount400

 

服务器实例发出的 400(错误请求)响应的数目。

 

iwsInstanceCount401

 

服务器实例发出的 401(未授权)响应的数目。

 

iwsInstanceCount403

 

服务器实例发出的 403(禁止)响应的数目。

 

iwsInstanceCount404

 

服务器实例发出的 404(未找到)响应的数目。

 

iwsInstanceLoad1MinuteAverage

 

运行服务器实例的系统的 1 分钟负载平均值。

 

iwsInstanceLoad5MinuteAverage

 

运行服务器实例的系统的 5 分钟负载平均值。

 

iwsInstanceLoad15MinuteAverage

 

运行服务器实例的系统的 15 分钟负载平均值。

 

iwsInstanceNetworkInOctets

 

网络上每秒传输的八位位组数。

 

iwsInstanceNetworkOutOctets

 

网络上每秒接收的八位位组数。

 

iwsVsTable

 

服务器的虚拟服务器。

 

iwsVsId

 

虚拟服务器标识符。

 

iwsVsRequests

 

虚拟服务器处理的请求数。

 

iwsVsInOctets

 

虚拟服务器接收的八位位组数。

 

iwsVsOutOctets

 

虚拟服务器传输的八位位组数。

 

iwsVsCount2xx

 

虚拟服务器发出的 200 级(成功)响应的数目。

 

iwsVsCount3xx

 

虚拟服务器发出的 300 级(重定向)响应的数目。

 

iwsVsCount4xx

 

虚拟服务器发出的 400 级(客户机错误)响应的数目。

 

iwsVsCount5xx

 

虚拟服务器发出的 500 级(服务器错误)响应的数目。

 

iwsVsCountOther

 

虚拟服务器发出的其它(非 2xx、3xx、4xx 或 5xx)响应的数目。

 

iwsVsCount200

 

虚拟服务器发出的 200(成功)响应的数目。

 

iwsVsCount302

 

虚拟服务器发出的 302(暂时移动)响应的数目。

 

iwsVsCount304

 

虚拟服务器发出的 304(未修改)响应的数目。

 

iwsVsCount400

 

虚拟服务器发出的 400(错误请求)响应的数目。

 

iwsVsCount401

 

虚拟服务器发出的 401(未授权)响应的数目。

 

iwsVsCount403

 

虚拟服务器发出的 403(禁止)响应的数目。

 

iwsVsCount404

 

虚拟服务器发出的 404(未找到)响应的数目。

 

iwsProcessTable

 

Sun ONE Application Server 进程。

 

iwsProcessId

 

操作系统进程标识符。

 

iwsProcessThreadCount

 

请求处理线程的数目。

 

iwsProcessThreadIdle

 

当前处于空闲状态的请求处理线程数。

 

iwsProcessConnectionQueueCount

 

连接队列中的当前连接数。

 

iwsProcessConnectionQueuePeak

 

同时排队的最大连接数。

 

iwsProcessConnectionQueueMax

 

连接队列中所允许的最大连接数。

 

iwsProcessConnectionQueueTotal

 

已接受的连接数。

 

iwsProcessConnectionQueueOverflows

 

由于连接队列溢出而被拒绝的连接数。

 

iwsProcessKeepaliveCount

 

保持活动的队列中的当前连接数。

 

iwsProcessKeepaliveMax

 

保持活动的队列中所允许的最大连接数。

 

iwsProcessSizeVirtual

 

进程大小(千字节)。

 

iwsProcessSizeResident

 

进程驻留大小(千字节)。

 

iwsProcessFractionSystemMemoryUsage

 

系统内存中的进程部分。

 

iwsListenTable

 

Sun ONE Application Server 监听套接字。

 

iwsListenId

 

监听套接字标识符。

 

iwsListenAddress

 

套接字监听的地址。

 

iwsListenPort

 

套接字监听的端口。

 

iwsListenSecurity

 

加密支持。

 

iwsThreadPoolCount

 

被拒绝的请求数。

 

iwsThreadPoolMax

 

队列中所允许的最大请求数。

 

iwsThreadPoolPeak

 

同时排队的最大请求数。

 

iwsThreadPoolTable

 

Sun ONE Application Server 线程池。

 

iwsVsCount503

 

已发出的 503(不可用)响应的数目。

 

iwsInstanceCount503

 

已发出的 503(不可用)响应的数目。

 

SNMP 消息

GETSET 是 SNMP 定义的两种消息。

MIB 中的每个对象都分配有一个唯一的标识符。SNMP 管理器通过发出 GETGETNEXT 命令(在其中指定对象的唯一标识符)来访问对象。代理的代理程序将获取指定对象的值并将其传输到 SNMP 管理器。如果添加到日志的事件符合陷阱过滤器条件,则可能生成 SNMP 陷阱。未生成陷阱的事件仅记录为维护日志表中的一个条目,由 SNMP 管理器通过标准的 GETGETNEXT 命令访问。

GETSET 消息将由网络管理站 (NMS) 发送给主代理。您可以通过管理界面使用其中一个或两个都使用。

SNMP 以协议数据单元 (PDU) 的格式交换网络信息。这些单元包含有关存储在被管理设备(例如 HTTP 服务器)上的变量的信息。这些变量(也称为被管理对象)具有值和标题,值和标题将在需要时报告给 NMS。由服务器发送给 NMS 的协议数据单元称为陷阱。以下各节将对 GETSET 的使用以及陷阱消息进行详细讨论。

SNMP 陷阱目标

SNMP 陷阱是 SNMP 代理发送给网络管理站 (NMS) 的消息。例如,当接口的状态由打开变为关闭时,SNMP 代理将发送一个陷阱。SNMP 代理必须知道 NMS 的地址,以便知道向何处发送陷阱。

您可以通过 Sun ONE Application Server 管理界面为 SNMP 主代理配置陷阱目标。还可以查看、编辑并删除已配置的陷阱目标。使用管理界面配置陷阱目标时,实际上是在编辑 CONFIG 文件。

发生重要事件时,服务器子代理将向 NMS 发送一条消息(或陷阱)。例如:

  1. 子代理通知主代理服务器已停止。
  2. 主代理发送一条消息(或陷阱),将该事件报告给 NMS。
  3. NMS 通过它的网络管理应用程序以文字或图形方式显示该信息。

有关设置 SNMP 陷阱端口的说明,请参见“安装 SNMP 主代理”

SNMP 代理社区

SNMP 代理社区由一个社区字符串及分配给该指定社区的操作组成。社区字符串是网络管理站 (NMS) 名称的文本字符串,SNMP 将用它进行授权。这意味着 NMS 在发送给代理的每条消息中都带有一个社区字符串。

所分配的操作是 get 和/或 set。然后,SNMP 代理可以验证 NMS 是否被授权执行 get 和/或 set 操作以便进行数据交换。社区字符串在 SNMP 包中发送时不被隐藏;字符串以 ASCII 文本格式发送。

您可以通过管理界面为每个指定的社区配置并管理社区字符串及允许的操作。有关设置 SNMP 代理社区的说明,请参见“安装 SNMP 主代理”

设置 SNMP

一般来讲,要使用 SNMP,系统上必须安装并运行有一个主代理和至少一个子代理。要启用子代理,必须先安装主代理。请参见“安装 SNMP 主代理”

设置 SNMP 的过程根据不同的系统而不同。下表概述了在不同情况下所要执行的过程。本章后面将对实际过程进行详细介绍。

如果服务器满足以下条件……

……请执行以下过程。(后续各节将详细讨论)。

当前没有运行本地代理

 

  1. 启动主代理。
  2. 为系统上安装的每个服务器启用子代理。
 

  • 本地代理当前正在运行。
  • 无 SMUX
  • 不需要继续使用本地代理
 

  1. 为管理服务器安装主代理时,停止本地代理。
  2. 启动主代理。
  3. 为每个服务器实例配置 SNMP 子代理。
 

  • 本地代理当前正在运行。
  • 无 SMUX
  • 需要继续使用本地代理
 

  1. 安装 SNMP 代理的代理程序。
  2. 启动 SNMP 代理的代理程序。
  3. 使用主代理端口号以外的端口号重新启动本地代理。
  4. 启动主代理。
  5. 为系统上安装的每个服务器启用子代理。
 

开始前,应当验证两件事情:

  • 您的系统是否已经运行了 SNMP 代理(操作系统的本地代理)。
  • 如果是,该本地 SNMP 代理是否支持 SMUX 通信。

有关如何验证这些信息的说明,请参见您的系统文档。



注意

在更改了管理服务器中的 SNMP 设置、安装了新的服务器或删除了现有服务器后,您必须执行以下步骤:

  • (Windows 2000) 重新启动 Windows SNMP 服务或重新引导计算机。
  • (UNIX) 使用管理服务器重新启动 SNMP 主代理和 SNMP 子代理。


本节包括以下主题:

使用 SNMP 代理的代理程序 (UNIX/Linux)

如果已经运行有一个本地代理,并且希望将它与一个 Sun ONE Application Server 主代理一起并行使用,则需要使用一个 SNMP 代理的代理程序。在启动之前,请确保停止本地主代理。(有关详细信息,请参见您的系统文档。)



注意

要使用代理程序,需要安装并启动它还必须使用 Sun ONE Application Server 主代理运行端口以外的端口重新启动本地 SNMP 主代理。



本节包括以下主题:

安装 SNMP 代理的代理程序

如果某个 SNMP 代理正在系统上运行,并且希望继续使用本地 SNMP 守护程序,请执行以下各节中的步骤:

  1. 安装 SNMP 主代理。请参见“安装 SNMP 主代理”
  2. 安装并启动 SNMP 代理的代理程序,然后重新启动本地 SNMP 守护程序。请参见“使用 SNMP 代理的代理程序 (UNIX/Linux)”
  3. 启动 SNMP 主代理。请参见“启用和启动 SNMP 主代理”
  4. 启用子代理。请参见“启用子代理”

要安装 SNMP 代理的代理程序,请编辑位于服务器根目录下的 install_dir/lib/snmp/sagt 中的 CONFIG 文件(您可以为此文件指定其它名称),以使其包含 SNMP 守护程序的监听端口。SNMP 代理的代理程序还需要包括它要转发的 MIB 树和陷阱。

下面是一个 CONFIG 文件示例:


AGENT AT PORT 1161 WITH COMMUNITY public
SUBTREES 1.3.6.1.2.1.1,
1.3.6.1.2.1.2,
1.3.6.1.2.1.3,
1.3.6.1.2.1.4,
1.3.6.1.2.1.5,
1.3.6.1.2.1.6,
1.3.6.1.2.1.7,
1.3.6.1.2.1.8
FORWARD ALL TRAPS;


启动 SNMP 代理的代理程序

要启动 SNMP 代理的代理程序,请在命令提示符下输入以下内容:

# sagt -c CONFIG&

重新启动本地 SNMP 守护程序

启动 SNMP 代理的代理程序后,在 CONFIG 文件中指定的端口重新启动本地 SNMP 守护程序。

要重新启动本地 SNMP 守护程序,请在命令提示符下输入以下内容:

# snmpd -P port_number

其中 port_number 是在 CONFIG 文件中指定的端口号。例如,在 Solaris 平台上,使用前面提到的 CONFIG 文件示例中的端口,您需要输入:

# snmpd -P 1161

安装 SNMP 主代理



注意

您不能使用管理界面安装和启动 SNMP 主代理,除非服务器是作为 root 运行的。



安装 SNMP 主代理的步骤:

  1. 以超级用户身份登录。
  2. 检查端口 161 上是否运行有 SNMP 守护程序 (snmpd)。
  3. 如果没有运行 SNMP 守护程序,请转到步骤 4

    如果运行有 SNMP 守护程序,请确保知道如何重新启动它以及它支持哪些 MIB 树。

  4. 如果运行有 SNMP 守护程序,请结束它的进程。
  5. 在管理界面的左侧窗格中,选择“Admin Server”节点。
  6. 选择“Monitoring”选项卡以显示“SNMP Agent Trap”页面,如下图所示。

   “SNMP Agent Trap”页面
“SNMP Agent Trap”页面的设置图示。

此页面显示了管理器条目信息。

  1. 键入正在运行网络管理软件的系统的名称。
  2. 键入网络管理系统用来监听陷阱的陷阱端口号。(常用的端口是 162。)有关陷阱的详细信息,请参见“SNMP 陷阱目标”
  3. 键入要在陷阱中使用的社区字符串。有关社区字符串的详细信息,请参见“SNMP 代理社区”
  4. 单击“OK”。
  5. 在“Monitoring”选项卡上,单击“SNMP Agent Community”链接。
  6. 将显示社区字符串信息,如下图所示。

   “SNMP Agent Community”页面
“SNMP Agent Community”页面的设置图示。

  1. 键入主代理的社区字符串。
  2. 选择社区的操作级别。
  3. 建立社区后,可以使用此页面上“Current Communities”标题下的按钮编辑其设置或删除它。

  4. 单击“OK”。
  5. 访问左侧窗格中“App Server Instances”下您的服务器实例,然后单击“Apply Changes”。

启用和启动 SNMP 主代理

主代理操作是在名为 CONFIG 的代理配置文件中定义的,您可以手动编辑此文件。要启用 SNMP 子代理,必须先安装 SNMP 主代理。



注意

如果在重新启动主代理时出现类似于System Error:Could not bind to port 的绑定错误,请使用 ps -ef | grep snmp 检查 magt 是否在运行。如果正在运行,请使用 kill -9 pid 命令结束该进程。然后,SNMP 的 CGI 将重新开始工作。



本节包括以下主题:

  • 在其它端口上启动主代理
  • 手动配置 SNMP 主代理
  • 编辑主代理的 CONFIG 文件
  • 定义 sysContact 和 sysLocation 变量
  • 配置 SNMP 主代理
  • 启动 SNMP 主代理
  • 启用子代理

在其它端口上启动主代理

管理界面只能在 161 端口上启动 SNMP 主代理。但是,您可以使用以下步骤在其它端口上手动启动主代理:

  1. 编辑 install_dir/lib/snmp/magt/CONFIG 以指定所希望的端口。
  2. 运行以下启动脚本:
  3. cd instance_root/admin-server ./start -shell install_dir/lib/snmp/magt/magt
    install_dir/lib/snmp/magt/CONFIG
    install_dir/lib/snmp/magt/INIT

然后,主代理将在所希望的端口上启动。但是,管理界面能够检测出主代理正在运行。

手动配置 SNMP 主代理

手动配置 SNMP 主代理的步骤:

  1. 以超级用户身份登录。
  2. 检查端口 161 上是否运行有 SNMP 守护程序 (snmpd)。
  3. 如果运行有 SNMP 守护程序,请确保知道如何重新启动它以及它支持哪些 MIB 树。然后结束它的进程。

  4. 编辑位于服务器根目录下 lib/snmp/magt 中的 CONFIG 文件。
  5. (可选)在 CONFIG 文件中定义 sysContactsysLocation 变量,如“定义 sysContact 和 sysLocation 变量”中所述。

编辑主代理的 CONFIG 文件

CONFIG 文件定义了将与主代理一起工作的社区和管理器。管理器的值应当是有效的系统名或 IP 地址。

下面是一个基本 CONFIG 文件的示例:


COMMUNITY          public
                   ALLOW ALL OPERATIONS

MANAGER            manager_station_name
                   SEND ALL TRAPS TO PORT 162
                    WITH COMMUNITY public


定义 sysContact 和 sysLocation 变量

您可以编辑 CONFIG 文件,为指定了 sysContactsysLocation MIB-II 变量的 sysContactsysLocation 添加初始值 。此示例中 sysContactsysLocation 的字符串放在了引号内。任何包含空格、换行符、制表符等的字符串都必须放在引号内。您也可以用十六进制记数法来指定值。

下面是一个 CONFIG 文件示例,其中定义了 sysContactsysLocation 变量:


COMMUNITY          public
                   ALLOW ALL OPERATIONS

MANAGER            nms2
                   SEND ALL TRAPS TO PORT 162
                   WITH COMMUNITY public

INITIAL            sysLocation "Server room
901 San Antonio Road
Palo Alto CA 94303
USA"

INITIAL            sysContact "John Doe
email:jdoe@sun.com"


配置 SNMP 子代理

要配置 SNMP 子代理,请执行以下步骤:

  1. 在左侧窗格中,选择“Admin Server”下的服务器实例节点。
  2. 在右侧窗格中,选择“Monitoring”选项卡。
  3. 选择“SNMP Subagent Configuration”链接。
  4. 将显示以下页面:

   “SNMP Subagent Configuration”页面
子代理的 SNMP 配置设置图示。

  1. (只适用于 UNIX)在“Master Host”字段中,输入服务器的名称和域。
  2. 输入服务器的说明,包括操作系统信息。
  3. 输入负责该服务器的组织。
  4. 输入服务器实例的位置。
  5. 在“Contact”字段中,输入负责该服务器的人员的姓名和联系信息。
  6. 选择“On”,启用 SNMP 统计数据收集。
  7. 单击“OK”。
  8. 访问左侧窗格中“App Server Instances”下您的服务器实例,然后单击“Apply Changes”。

启动 SNMP 主代理

安装 SNMP 主代理后,您可以手动启动它或通过管理界面使用管理服务器进行启动。

手动启动 SNMP 主代理

要手动启动主代理,请在命令提示符下输入以下内容:

# magt CONFIG INIT&

INIT 文件是包含 MIB-II 系统组信息(包括系统位置和联系信息)的非易失性文件。如果 INIT 不存在,首次启动主代理时将创建它。



注意

如果 CONFIG 文件中的管理器名称无效,将导致主代理启动失败。



要在非标准端口上启动主代理,请使用以下两种方法之一:

方法 1:CONFIG 文件中,为主代理用来监听来自管理器的 SNMP 请求的每个接口指定传输映射。传输映射允许主代理接受标准端口和非标准端口上的连接。主代理还可以在非标准端口上接受 SNMP 通信。并行 SNMP 的最大数目受限于目标系统对每个进程的打开的套接字或文件描述符数目的限制。下面是一个传输映射条目示例:

TRANSPORT          extraordinary   SNMP
                   OVER UDP SOCKET
                    AT PORT 11161

手动编辑 CONFIG 文件后,您应当在命令提示符下键入以下内容以便手动启动主代理:

# magt CONFIG INIT&

方法 2:编辑 /etc/services 文件,以允许主代理接受标准端口和非标准端口上的连接。

使用管理服务器启动 SNMP 主代理

要使用管理服务器启动 SNMP 主代理,请执行以下步骤:



注意

您必须以超级用户身份登录 Sun ONE Application Server 才能启动 SNMP 主代理。



  1. 登录到管理服务器。
  2. 在左侧窗格中选择“Admin Server”节点,然后选择“Monitoring”选项卡。
  3. 在右侧窗格中靠近顶部的位置,选择“SNMP Agent Control”链接。
  4. 将显示以下页面。

   “SNMP Agent Control”页面
如何控制 SNMP 主代理的图示。

  1. 单击“Start”。
  2. 您还可以在“SNMP Agent Control”页面上停止和重新启动 SNMP 主代理。

启用子代理

安装了管理服务器附带的主代理后,您必须在尝试启动它之前为您的服务器实例启用子代理。有关安装主代理的信息,请参见“安装 SNMP 主代理”

在 UNIX/Linux 平台上,您可以使用子代理停止 SNMP 功能。您必须先停止子代理,然后再停止主代理。如果先停止主代理,可能无法停止子代理。如果发生这种情况,请重新启动主代理,停止子代理,然后停止主代理。

启用 SNMP 子代理的步骤:

  1. 在左侧窗格中,展开“App Server Instances”节点。
  2. 选择服务器实例,然后单击“Monitoring”选项卡。
  3. 选择“SNMP Subagent Control”选项以显示如下图所示的页面。

   “SNMP Subagent Control”页面
SNMP 子代理的控制设置图示。

在此页面中,您可以启动、停止或重新启动 SNMP 子代理。子代理的状态将显示在控制按钮的上面。

在 Windows 平台上,Windows SNMP 服务用于监视 Sun ONE Application Server;可以使用“控制面板”-“管理工具”中的“服务”选项中对其进行控制。



注意

对 SNMP 配置进行任何更改后,必须单击“OK”,然后从“SNMP Subagent Control”页面中重新启动 SNMP 子代理。




上一个      目录      索引      下一个     
Copyright 2003 Sun Microsystems, Inc. All rights reserved.