Sun Java System Web Proxy Server 4.0.8 管理指南

使用统计信息监视服务器

您可以使用统计信息功能监视服务器的当前活动。统计信息显示了服务器正在处理的请求的数目以及这些请求的处理状况。如果交互式服务器监视器报告该服务器处理的请求过多,您可能需要调整服务器配置或系统的网络内核以容纳这些请求。由于收集统计信息会增加 Proxy Server 开销,因此默认情况下禁用统计信息。如果启用统计信息,服务器将开始收集并保存统计信息。

启用统计信息后,可以查看以下方面的统计信息:

交互式服务器监视器会报告各种服务器统计信息的总计。有关这些统计信息的说明,请参见联机帮助中的 "Monitor Current Activity" 页。

处理 Proxy Server 统计信息

可使用一个称为 stats-xml 的内置函数来收集 Proxy Server 统计信息。必须启用此函数才能从 Server Manager 中查看统计信息,或使用 perfdump 函数生成报告。此外,还可使用 stats-xml 函数来启用概要分析,后者是通过使用自定义的 NSAPI 函数监视统计信息所必需的。在服务器上启用统计信息和概要分析后,将会对 obj.conf 文件中一个称为 stats-init服务器函数进行初始化,以开始统计信息的收集。

Init profiling="on" fn="stats-init"

此说明还会创建一条 NameTrans 指令,以便您从浏览器窗口访问统计信息。

NameTrans fn="assign-name" name="stats-xml" from="(/stats-xml|/stats-xml/.*)

最后,启用统计信息还会添加一条 Service 指令,用于在选择 NameTrans 指令时处理 stats-xml 函数。

<Object name="stats-xml">

Service fn="stats-xml"

</Object>

收集统计信息时将会更新 obj.conf 中的 Init 函数。因此,为使这些更改生效,必须停止并启动服务器。

下例显示了 obj.conf 文件中的 stats-init

Init profiling="on" fn="stats-init" update-interval="5"

此外,还可以指定以下值:

可以使用以下 URL 检索 stats-xml 输出:

http://computer_name:proxyport /stats-xml/proxystats.xml

此请求将返回一个包含 Proxy Server 统计信息的 XML 页面。某些浏览器允许您在浏览器窗口中查看数据,而另外一些浏览器则要求将数据保存至外部文件,然后使用外部查看器进行查看。如果不能解析所分析数据的不同视图的统计信息,此信息的用途将不十分明显。借助第三方工具可帮助完成此过程。如果没有解析工具,最好通过 Server Manager 或 perfdump SAF 来观察 stats-xml 输出。

限制对 stats-xml 输出的访问

如果要对可以通过浏览器查看服务器的 stats-xml 统计信息的用户进行限制,应为 /stats-xml URI 创建一个 ACL。

此外,还必须在 obj.conf 文件的 stats-xml 对象定义中引用该 ACL 文件。例如,如果为 /stats-xml URI 创建了一个命名的 ACL,则需要在该对象定义的 PathCheck 语句中引用该 ACL 文件,如下所示:

<Object name="stats-xml">

PathCheck fn="check-acl" acl="stats.acl"

Service fn="stats-xml"

</Object>

启用统计信息

必须先在 Proxy Server 上激活统计信息,才能对性能进行监视。您可以通过 Server Manager 或通过编辑 obj.confmagnus.conf 文件来激活统计信息。为监视和性能调优目的而开发自动化工具或编写自定义程序的用户可能更愿意直接处理 stats-xml


注意 – 注意 –

启用统计信息/概要分析后,服务器的所有用户都可以使用统计信息。


Procedure从 Server Manager 中启用统计信息

  1. 访问 Server Manager 并单击 "Server Status" 选项卡。

  2. 单击 "Monitor Current Activity" 链接。

    此时将显示 "Monitor Current Activity" 页面。

  3. 对于 "Activate Statistics/Profiling",选择 "Yes" 选项以启用统计信息。

  4. 单击 "OK"。

  5. 单击 "Restart required"。

    此时将显示 "Apply Changes" 页面。

  6. 单击 "Restart Proxy Server" 按钮以应用更改。

Procedure使用 stats-xml 启用统计信息

  1. obj.conf 文件的默认对象下添加下行:


    NameTrans fn="assign-name" name="stats-xml" from="
    (/stats-xml|/stats-xml/.*)"
  2. obj.conf 中添加以下 Service 函数:

    <Object name="stats-xml">

    Service fn="stats-xml"

    </Object>

  3. obj.conf 中添加 stats-init SAF。

使用统计信息

启用统计信息后,便可获取有关服务器实例运行状况的各种信息。统计信息按功能被划分为若干方面。

在 Server Manager 中显示统计信息

本节介绍如何在 Server Manager 中查看 proxystats.xml 数据的子集。

可以采用总计图、最大值图、峰数图和条形图来查看与 Proxy Server 连接、DNS 处理、保持活动值、高速缓存和服务器请求有关的信息。

以下部分将介绍可获取的上述各项的信息类型。

连接统计信息

可从 Server Manager 获取以下连接统计信息:

DNS 统计信息

可从 Server Manager 获取以下 DNS 统计信息:

保持活动统计信息

可从 Server Manager 获取以下保持活动统计信息:

服务器请求统计信息

可从 Server Manager 获取以下服务器统计信息:

Procedure访问统计信息

  1. 访问 Server Manager 并单击 "Server Status" 选项卡。

  2. 单击 "Monitor Current Activity" 链接。

  3. 从 "Select Refresh Interval" 下拉式列表中选择刷新间隔。

    刷新间隔是两次更新所显示的统计信息的间隔秒数。

  4. 从 "Select Statistics To Be Displayed" 下拉式列表中选择要显示的统计信息种类。

    有关统计信息类型的更多信息,请参见在 Server Manager 中显示统计信息

  5. 单击 "Submit"。

    如果服务器实例正在运行,并且已启用了统计信息/概要分析,将会看到一个显示有所选统计信息种类的页面。该页面每隔 5-15 秒更新一次,具体依刷新间隔的值而定。

  6. 从下拉式列表中选择进程 ID。

    可通过 Server Manager 查看当前活动,但这些类别并不完全与服务器的调节相关。建议使用 perfdump 统计信息来调节服务器。有关更多信息,请参见下一节。

使用 perfdump 实用程序监视当前活动

perfdump 实用程序是 Proxy Server 中内置的一个服务器应用函数 (Server Application Function, SAF),用于从 Proxy Server 内部统计信息中收集各种性能数据片断并以 ASCII 文本形式进行显示。与通过 Server Manager 获得的统计信息种类相比,使用 perfdump 实用程序可监视更多种统计信息。

利用 perfdump 可将统计信息整合起来。不再是监视单个进程,而是将统计信息乘以进程数,这样可以从总体上更准确地了解服务器的情况。

启用 perfdump 实用程序

只有在启用 stats-xml 函数之后,才能启用 perfdump SAF。

Procedure启用 perfdump SAF

  1. obj.conf 文件的默认对象后面添加以下对象:

    <Object name="perf">

    Service fn="service-dump"

    </Object>

  2. 将下行添加到默认对象:

    NameTrans fn=assign-name from="/.perf" name="perf"

  3. 重新启动服务器软件。

  4. 通过转到 http:// computer_name:proxyport/.perf 访问 perfdump

    您可以请求 perfdump 统计信息,并指定浏览器的自动刷新频率(以秒为单位)。以下示例将刷新频率设置为每隔 5 秒一次:

    http:// computer_name:proxyport/.perf?refresh=5

perfdump 输出样例

以下显示了 perfdump 输出样例:


			 
proxyd pid: 6751

Sun Java System Web Proxy Server 4.0 B05/02/2005 15:32 (SunOS DOMESTIC)

Server started Thu May 19 13:15:14 2005
Process 6751 started Thu May 19 13:15:14 2005

ConnectionQueue:
-----------------------------------------
Current/Peak/Limit Queue Length            0/1/4096
Total Connections Queued                   1
Average Queue Length (1, 5, 15 minutes)    0.00, 0.00, 0.00
Average Queueing Delay                     0.09 milliseconds

ListenSocket ls1:
------------------------
Address                   http://0.0.0.0:8081
Acceptor Threads          1

KeepAliveInfo:
--------------------
KeepAliveCount        0/256
KeepAliveHits         0
KeepAliveFlushes      0
KeepAliveRefusals     0
KeepAliveTimeouts     0
KeepAliveTimeout      30 seconds

SessionCreationInfo:
------------------------
Active Sessions           1
Keep-Alive Sessions       0
Total Sessions Created    48/128

DiskCacheInfo:
------------------
Hit Ratio               0/0 (  0.00%)
Misses                  0
Cache files at startup  0
Cache files created     0
Cache files cleaned up  0

Native pools:
---------------------------
NativePool:
Idle/Peak/Limit               1/1/128
Work Queue Length/Peak/Limit  0/0/0

Server DNS cache disabled

Async DNS disabled

Performance Counters:
------------------------------------------------
 ..........................Average         Total      Percent

Total number of requests:                      1
Request processing time:    0.2559        0.2559

default-bucket (Default bucket)
Number of Requests:                            1    (100.00%)
Number of Invocations:                         7    (100.00%)
Latency:                    0.2483        0.2483    ( 97.04%)
Function Processing Time:   0.0076        0.0076    (  2.96%)
Total Response Time:        0.2559        0.2559    (100.00%)

Sessions:
----------------------------
Process  Status     Function
6751     response   service-dump


            

有关这些参数的更多信息,请参见《Sun ONE Web Server 6.1 Performance Tuning, Sizing, and Scaling Guide》的第 2 章中的 "Using Statistics to Tune Your Server"。

限制对 perfdump 输出的访问

如果要对可以通过浏览器查看服务器的 perfdump 统计信息的用户进行限制,需要为 /.perf URI 创建一个 ACL。

此外,还必须在 obj.conf 文件的 perf 对象定义中引用该 ACL 文件。例如,如果为 /.perf URI 创建了一个命名的 ACL,则需要在该对象定义的 PathCheck 语句中引用该 ACL 文件,如下所示:

<Object name="perf">

PathCheck fn="check-acl" acl="perf.acl"

Service fn="service-dump"

</Object>

使用性能存储桶

通过性能存储桶,可以定义存储桶并将其链接到各种服务器函数。每次调用其中某个函数时,服务器都会收集统计数据并将其添加到存储桶中。例如,send-cgi 和 NSServletService 函数分别用于为 CGI 请求和 Java servlet 请求提供服务。您可以定义两个存储桶来维护 CGI 请求和 servlet 请求各自的计数器,也可创建一个存储桶来对两种类型的动态内容请求进行计数。收集此信息的开销很少,对服务器性能的影响通常可以忽略不计。之后,可以使用 perfdump 实用程序访问此信息。

存储桶中存储的信息如下:

default-bucket 由服务器预定义,用于记录未与任何用户定义的存储桶关联的函数的统计信息。

配置

必须为 magnus.confobj.conf 文件中的性能存储桶指定所有配置信息。只有默认存储桶才会自动启用。

首先,必须按使用 perfdump 实用程序监视当前活动中所述启用性能测量。

以下示例说明了如何在 magnus.conf 文件中定义新的存储桶:

Init fn="define-perf-bucket" name="acl-bucket" description="ACL bucket"

Init fn="define-perf-bucket" name="file-bucket" description="Non-cached responses"

Init fn="define-perf-bucket" name="cgi-bucket" description="CGI Stats"

此示例将创建三个存储桶:acl-bucketfile-bucketcgi-bucket。要将这些存储桶与函数关联,请在要测量性能的 obj.conf 函数中添加 bucket=bucket-name

示例

PathCheck fn="check-acl" acl="default" bucket="acl-bucket"

...

Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file" bucket="file-bucket"

...

<Object name="cgi">

ObjectType fn="force-type" type="magnus-internal/cgi"

Service fn="send-cgi" bucket="cgi-bucket"

</Object>

性能报告

可以使用 perfdump 实用程序来访问存储桶中的服务器统计信息。性能存储桶信息位于 perfdump 所返回报告的最后一部分。

该报告包含以下信息:

以下显示了可通过 perfdump 获取的性能存储桶信息样例:


Performance Counters:
------------------------------------------------
                           Average         Total      Percent

Total number of requests:                      1
Request processing time:    0.2559        0.2559

default-bucket (Default bucket)
Number of Requests:                            1    (100.00%)
Number of Invocations:                         7    (100.00%)
Latency:                    0.2483        0.2483    ( 97.04%)
Function Processing Time:   0.0076        0.0076    (  2.96%)
Total Response Time:        0.2559        0.2559    (100.00%)