您可以使用统计信息功能监视服务器的当前活动。统计信息显示了服务器正在处理的请求的数目以及这些请求的处理状况。如果交互式服务器监视器报告该服务器处理的请求过多,您可能需要调整服务器配置或系统的网络内核以容纳这些请求。由于收集统计信息会增加 Proxy Server 开销,因此默认情况下禁用统计信息。如果启用统计信息,服务器将开始收集并保存统计信息。
连接
DNS
保持活动
高速缓存
服务器请求
交互式服务器监视器会报告各种服务器统计信息的总计。有关这些统计信息的说明,请参见联机帮助中的 "Monitor Current Activity" 页。
可使用一个称为 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"
此外,还可以指定以下值:
update-interval。统计信息的更新周期(以秒为单位)。设置越高(频率越低),性能越好。最小值为 1;默认值为 5。
profiling。是否激活 NSAPI 性能概要分析。默认值为 no,该值可略微改善服务器性能。但是,如果通过用户界面激活统计信息,默认情况下将会启用概要分析。
可以使用以下 URL 检索 stats-xml 输出:
http://computer_name:proxyport /stats-xml/proxystats.xml
此请求将返回一个包含 Proxy Server 统计信息的 XML 页面。某些浏览器允许您在浏览器窗口中查看数据,而另外一些浏览器则要求将数据保存至外部文件,然后使用外部查看器进行查看。如果不能解析所分析数据的不同视图的统计信息,此信息的用途将不十分明显。借助第三方工具可帮助完成此过程。如果没有解析工具,最好通过 Server Manager 或 perfdump SAF 来观察 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.conf 和 magnus.conf 文件来激活统计信息。为监视和性能调优目的而开发自动化工具或编写自定义程序的用户可能更愿意直接处理 stats-xml。
启用统计信息/概要分析后,服务器的所有用户都可以使用统计信息。
访问 Server Manager 并单击 "Server Status" 选项卡。
单击 "Monitor Current Activity" 链接。
此时将显示 "Monitor Current Activity" 页面。
对于 "Activate Statistics/Profiling",选择 "Yes" 选项以启用统计信息。
单击 "OK"。
单击 "Restart required"。
此时将显示 "Apply Changes" 页面。
单击 "Restart Proxy Server" 按钮以应用更改。
在 obj.conf 文件的默认对象下添加下行:
NameTrans fn="assign-name" name="stats-xml" from=" (/stats-xml|/stats-xml/.*)" |
在 obj.conf 中添加以下 Service 函数:
<Object name="stats-xml">
Service fn="stats-xml"
</Object>
在 obj.conf 中添加 stats-init SAF。
启用统计信息后,便可获取有关服务器实例运行状况的各种信息。统计信息按功能被划分为若干方面。
本节介绍如何在 Server Manager 中查看 proxystats.xml 数据的子集。
可以采用总计图、最大值图、峰数图和条形图来查看与 Proxy Server 连接、DNS 处理、保持活动值、高速缓存和服务器请求有关的信息。
以下部分将介绍可获取的上述各项的信息类型。
可从 Server Manager 获取以下连接统计信息:
连接总数
最大已排队连接数
已排队连接的峰数
当前已排队连接数
进程数
可从 Server Manager 获取以下 DNS 统计信息:
最大 DNS 高速缓存条目数
进程数
DNS 高速缓存命中次数(还会以条形图形式显示)
DNS 高速缓存未命中次数(还会以条形图形式显示)
可从 Server Manager 获取以下保持活动统计信息:
最大保持活动连接数
保持活动超时值
进程数
保持活动命中次数(还会以条形图形式显示)
保持活动刷新次数(还会以条形图形式显示)
保持活动拒绝次数(还会以条形图形式显示)
保持活动超时次数(还会以条形图形式显示)
可从 Server Manager 获取以下服务器统计信息:
请求总数
接收字节数
发送字节数
进程数
按 HTTP 服务器代码对请求的划分情况(还会以条形图形式显示)。例如,HTTP 服务器代码 200 表示已完成的请求
访问 Server Manager 并单击 "Server Status" 选项卡。
单击 "Monitor Current Activity" 链接。
从 "Select Refresh Interval" 下拉式列表中选择刷新间隔。
刷新间隔是两次更新所显示的统计信息的间隔秒数。
从 "Select Statistics To Be Displayed" 下拉式列表中选择要显示的统计信息种类。
有关统计信息类型的更多信息,请参见在 Server Manager 中显示统计信息。
单击 "Submit"。
如果服务器实例正在运行,并且已启用了统计信息/概要分析,将会看到一个显示有所选统计信息种类的页面。该页面每隔 5-15 秒更新一次,具体依刷新间隔的值而定。
从下拉式列表中选择进程 ID。
可通过 Server Manager 查看当前活动,但这些类别并不完全与服务器的调节相关。建议使用 perfdump 统计信息来调节服务器。有关更多信息,请参见下一节。
perfdump 实用程序是 Proxy Server 中内置的一个服务器应用函数 (Server Application Function, SAF),用于从 Proxy Server 内部统计信息中收集各种性能数据片断并以 ASCII 文本形式进行显示。与通过 Server Manager 获得的统计信息种类相比,使用 perfdump 实用程序可监视更多种统计信息。
利用 perfdump 可将统计信息整合起来。不再是监视单个进程,而是将统计信息乘以进程数,这样可以从总体上更准确地了解服务器的情况。
只有在启用 stats-xml 函数之后,才能启用 perfdump SAF。
在 obj.conf 文件的默认对象后面添加以下对象:
<Object name="perf">
Service fn="service-dump"
</Object>
将下行添加到默认对象:
NameTrans fn=assign-name from="/.perf" name="perf"
重新启动服务器软件。
通过转到 http:// computer_name:proxyport/.perf 访问 perfdump。
您可以请求 perfdump 统计信息,并指定浏览器的自动刷新频率(以秒为单位)。以下示例将刷新频率设置为每隔 5 秒一次:
http:// computer_name:proxyport/.perf?refresh=5
以下显示了 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 统计信息的用户进行限制,需要为 /.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.conf 和 obj.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-bucket、file-bucket 和 cgi-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 所返回报告的最后一部分。
该报告包含以下信息:
"Average"、"Total" 和 "Percent" 列给出每一个所请求的统计信息的数据。
"Request Processing Time" 是服务器处理迄今已收到的所有请求需要的总时间。
"Number of Requests" 是函数的请求总数。
"Number of Invocations" 是函数的总调用次数。该值与请求数不同,因为处理一个请求时可能会多次调用某个函数。此行的百分比列是参照所有存储桶的调用总数计算得出的。
"Latency" 是 Proxy Server 为调用函数进行准备所花费的时间(以秒为单位)。
"Function Processing Time" 是 Proxy Server 在函数内部花费的时间(以秒为单位)。"Function Processing Time" 和 "Total Response Time" 的百分比是参照总的 "Request Processing Time" 计算得出的。
"Total Response Time" 为 "Function Processing Time" 和 "Latency" 之和。
以下显示了可通过 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%) |