통계 기능을 사용하여 서버의 현재 작동을 모니터링할 수 있습니다. 통계에는 서버가 처리하는 요청의 수와 해당 요청을 처리하는 상태 등이 표시됩니다. 대화형 서버 모니터에 서버가 많은 수의 요청을 처리하고 있는 것으로 표시되면 요청을 수용하도록 서버 구성 또는 시스템의 네트워크 커널을 조정할 수 있습니다. 통계를 수집하면 Proxy Server에 오버헤드가 추가되므로 통계는 기본적으로 비활성화되어 있습니다. 통계를 사용 설정하면 서버가 통계 정보를 수집하고 저장하기 시작합니다.
통계를 사용 설정하면 다음 영역에서 통계를 볼 수 있습니다.
연결
DNS
KeepAlive
캐시
서버 요청
대화형 서버 모니터가 보고하는 다양한 서버 통계 전체에 대한 설명은 온라인 도움말의 Monitor Current Activity 페이지를 참조하십시오.
Proxy Server 통계 수집에는 stats-xml이라고 하는 내장 함수가 사용됩니다. 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/.*)
마지막으로, 통계를 사용 설정하면 NameTrans 지시문이 선택되었을 때 stats-xml 함수를 처리하기 위한 Service 지시문이 추가됩니다.
<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을 만들어야 합니다.
ACL 파일은 obj.conf 파일의 stats-xml 객체 정의에서도 참조되어야 합니다. 예를 들어 /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에 대해 예 옵션을 선택하여 통계를 사용 설정합니다.
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 드롭다운 목록에서 Refresh Interval을 선택합니다.
새로 고침 간격은 표시되는 통계 정보를 업데이트하는 간격(초)입니다.
표시할 통계의 종류를 Select Statistics To Be Displayed 드롭다운 목록에서 선택합니다.
통계의 유형에 대한 자세한 내용은 Server Manager에 통계 표시를 참조하십시오.
Submit를 누릅니다.
서버 인스턴스가 실행 중이며 통계/프로필링을 사용하는 경우 선택한 종류의 통계를 표시하는 페이지가 나타납니다. 페이지는 새로 고침 간격 값에 따라 5-15초마다 업데이트됩니다.
드롭다운 목록에서 프로세스 아이디를 선택합니다.
Server Manager를 통해 현재 활동을 볼 수 있지만 이러한 범주가 서버의 조정에 직접 관련된 것은 아닙니다. perfdump 통계는 서버를 조정할 때 권장됩니다. 자세한 내용은 다음 절을 참조하십시오.
perfdump 유틸리티는 Proxy Server 내부 통계에서 다양한 성능 데이터를 수집하여 ASCII 텍스트로 표시하는 Proxy Server에 내장된 SAF(Server Application Function)입니다. perfdump 유틸리티를 사용하면 Server Manager를 통해 사용 가능한 것보다 훨씬 다양한 통계를 모니터링할 수 있습니다.
perfdump를 사용하면 통계가 통합됩니다. 단일 프로세스를 모니터링하는 것이 아니라 프로세스 수에 따라 배가된 통계가 표시되므로 서버 전체를 보다 정확하게 모니터링할 수 있습니다.
perfdump SAF는 stats-xml 함수를 사용한 후에만 사용 설정할 수 있습니다.
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을 만들어야 합니다.
또한 ACL 파일이 obj.conf 파일의 perf 객체 정의에서 참조되어야 합니다. 예를 들어 /.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 서블릿 요청을 서비스하는 데 사용됩니다. CGI 및 서블릿 요청에 대해 두 개의 버킷을 정의하여 별도의 카운터를 유지하거나 두 가지 동적 컨텐트 유형 모두에 대한 요청을 계산하는 버킷을 하나 만들 수 있습니다. 이러한 정보의 수집 비용은 매우 낮으며 보통 서버 성능에 거의 영향을 미치지 않습니다. 이러한 정보는 나중에 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에서 반환된 보고서의 마지막 섹션에 있습니다.
보고서에는 다음 정보가 포함되어 있습니다.
요청된 각 통계의 평균, 총계 및 백분율 열
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%) |