Windows Networking

11-3-4. 자원관리- 성능모니터(Performance Monitor)

새벽예찬 2008. 11. 25. 11:39

서버의 성능을 파악하여 업그레이드나 서버증설 여부를 파악하는 것도 필요하다. 막연하게 메모리가 부족한가? CPU가 느린가? 등으로 생각하기보다는 실질적인 수치를 기록하여 근거치를 마련할 필요가 있기 때문이다. 이러한 자료는 재무부서에 근거치로 제시하여 현실적인 판단을 할 수 있는 자료로 사용될 수 있을 것이다.

 

성능모니터의 기능을 3가지로 나누어서 접근해 보았다. 먼저 실시간으로 현재 상태를 파악하는 방법, 둘째로 회사에서 기준치를 마련하여 향후 비교할 수 있는 근거를 마련하는 방법, 마지막으로 경고를 설정하여 일정 수준에 이르렀을 때 관리자에게 통보를 한다거나 서버에서 특별한 파일을 실행하는 등 조치를 취할 수 있도록 하는 기능에 대해서 살펴보겠다.

 

11-3-4-1.현재 상태를 실시간으로 점검해 보자.

 

갑자기 서버의 응답속도가 느려졌다는 사용자들의 불평이 늘기 시작했다. 도대체 뭐가 문제인지 막연하기만 할 뿐이다. 이 경우 현 시점의 서버의 상태를 실시간으로 체크해 볼 필요가 있다. 먼저 관리도구-성능을 실행하거나 실행창에서 Perfmon 이라고 입력한다.


<그림11-59. 성능 모니터>

성능 모니터가 열렸다. 왼쪽 패널을 보면 세가지로 분류해 볼 수 있다. ‘시스템 모니터를 클릭하여 실시간 서버상태를 볼 수 있고, 아래쪽에는 로그와 경고를 볼 수 있다. 오른쪽 패널에는 실시간 수치가 나오게 될 화면이다. 하지만 아무것도 없다. 당연한 일이지만 무엇을 모니터링 할것인지를 결정해 주어야 한다. 화면에서 + 버튼을 누른다.

 


<그림11-60. 성능모니터 - 카운터 추가 화면1>

카운터 추가 화면이 열리는데 이것은 개체, 카운터, 인스턴스 라는 세가지 항목으로 나뉘어 있다.

 

개체는 모니터링 대상을 의미한다. 메모리, CPU, 서비스, 네트워크 등 어떤 대상을 모니터링 할것인지를 성능 개체에서 선택한다. 많은 성능개체들이 있고, 성능개체를 선택할때마다 카운터들도 달라진다. 카운터는 해당 개체중에서 어떠한 수치를 모니터하고 싶은지를 결정한다. 예를 들어 메모리라는 개체를 모니터링 한다면 현재 사용중인 메모리를 측정하고 싶은것인지, 남아있는 메모리를 측정하고 싶은 것인지, 원하는 수치가 있을 것이다. 그것이 바로 카운터이다. 마지막으로 인스턴스는 개체에 대한 구체적인 대상을 뜻한다. 예를 들어 프로세서(CPU)’를 모니터링 한다고 할 때 만일 당신의 시스템이 CPU 2개 가진 시스템이었다면 인스턴스는 _Total, 0, 1 이렇게 세가지 인스턴스를 보여준다. CPU전체를 모두 모니터링 할것인지, 특별한 CPU만 모니터링 할 것인지를 결정하는 것이다. 그것이 인스턴스이다.


<그림11-61. 성능모니터 - 카운터 추가 화면2>

일일이 외워서 쓰기에는 너무나 많은 개체가 있고, 거기에 따른 카운터가 존재한다. 다행히 성능 모니터 도구에서는 어떤 개체를 선택하게 되면 가장 많이 사용되게 되는 필수적인 카운터들이 기본적으로 하이라이트되어 있는 것을 알 수 있다. 그것을 모니터링 하는 것이 우선이다. 개체, 카운터, 인스턴스를 결정하고 나면 [추가]버튼을 누른다. 몇가지를 추가한 다음 [닫기]버튼을 눌렀다.

 

<그림11-62. 성능모니터 카운터가 추가된 화면>

카운터를 추가하고 나면 <그림11-62>와 같은 화면을 만날수 있다. 기본값인 1초 간격으로 실시간으로 그래프가 움직이는 것을 확인할 수 있다. 모니터링 하는 동안에 평균치도 보여주며 최소값, 최대값 등도 볼 수 있다. 화면에 보여지는 정보를 등록정보버튼을 눌러서 조절할 수 있다. 그림에서 O으로 표기한 부분인 등록정보를 클릭하였다.

 

 


<그림11-63. 성능모니터 등록정보>

그래프 탭을 열고 세로눈금가로눈금을 체크하였다.

 

 


<그림11-64. 성능모니터 등록정보가 수정된 화면>

등록정보에서 옵션을 바꾼것과 같이 이제 그래프에는 가로, 세로 눈금이 표기된 것이 보인다.

 

 


<그림11-65. 성능모니터 히스토그램 보기>

기본적으로 성능모니터는 차트형태로 실시간 데이터를 보여주는데 추가로 두가지를 더 지원한다. <그림11-65>는 도구모음중에서 히스토그램 보기를 선택하여 막대그래프 형태로 보여주는 화면을 볼 수 있다. 단지 보기형태만 달라진 것일 뿐이다.

 

 


<그림11-66. 성능모니터 보고서 보기>

다시 보고서 보기를 선택하여 실시간 데이터를 보고서 형태로 보여지도록 설정하였다. 보고서 형태에서 1초 간격으로 계속 변경되는 데이터를 확인할 수 있다.

 


<그림11-67. 성능모니터 차트 보기>

다시 차트 보기를 선택하여 기본설정으로 돌아왔다. 색깔이 다르게 표현되기는 하지만 많은 카운터를 모니터링 하다 보면 원하는 카운터에 대한 그래프가 쉽게 눈에 들어오지 않는다. 이 경우 [Ctrl+H]를 누른다.

 

 

 


<그림11-68. 특정 카운터를 하이라이트한 화면>
 

[Ctrl+H]를 누르면 현재 선택한 카운터에 해당하는 그래프만 하이라이트되어 보인다. 구별이 쉬워진다.

 


<그림11-69. 성능모니터 카운터 재 추가 화면>

현재 추가한 카운터에서 새롭게 카운터를 더 추가하려면 <그림11-69>에서 보는것처럼 카운터의 종류가 있는 창에서 마우스 오른쪽 단추를 이용하여 카운터 추가를 선택하면 된다.

 

 

 


<그림11-70. 성능모니터 카운터 수치 저장>

또한 이 자료를 Html 포맷으로 저장하여 웹브라우저를 통해서 들여다 볼 수도 있는데 보고자료를 만들 때 유용하게 쓸 수 있다.

 

 


<그림11-71. 성능모니터 카운터 수치를 웹페이지로 저장>

파일 형식에서 웹 페이지(*.htm)’을 선택한후 test 라고 이름을 붙였다.

 

 


<그림11-72. 성능모니터 웹페이지로 본 성능모니터>

웹브라우저를 통해서 그래프를 그대로 들여다 볼 수 있다. 단순한 하나의 html 파일이지만 버튼을 클릭하여 다른 타입의 그래프를 볼 수도 있고, 카운터를 클릭하고 그 카운터에 대한 수치를 확인할 수도 있다. 모니터링 하고 있는 서버와 연결되어 도구모음의 카메라 모양의 버튼을 이용하여 데이터 업데이트를 시키면 현 시점의 정보를 가져올 수도 있다 

 

 

대부분의 개체와 카운터는 기본적으로 활성화되어 있지만 디스크 관련 성능카운터들은 시스템시작과 함께 설정되어 있지 않은 것들이 있다. 필요하다면 diskperf 도구를 이용하여 카운터 설정을 바꿔줄 수 있다. <그림11-73>을 참고한다.


<그림11-73. 성능모니터 디스크 카운터 추가>

 

그림에서는 diskperf /? 를 이용하여 사용법을 알아본 다음 diskperf –YV 를 이용하여 시스템이 부팅할 때 논리, 물리 디스크 성능 카운터를 사용할 수 있도록 설정하였다.

ㅇ 병목현상을 파악하기 위한 기본 카운터들

 

수많은 카운터들이 있지만 그중에서도 특히 어떤 카운터를 모니터링 할 것인가는 막연한 문제가 아닐수 없다. 현실적으로 뚜렷한 객관적인 수치를 내 세우기는 어렵지만 체크해 봐야할 카운터들과 각 카운터에서 허용되는 수치 및 문제판단시 조치사항들에 대해서 정리를 해 본다.

성능개체\카운터

권장방향

허용수치

조치해야 할 사항

Memory\Pages/sec

낮은값

0-20

RAM추가 / 서버분산 고려

Memory\Available Bytes

낮은값

최소 4MB

Memory\Committed Bytes

낮은값

실제 RAM보다 낮아야함

Memory\Pool Non-Paged Bytes

-

지속적으로 평행선 유지

프로세스의 이상 유무 검토

Processor\%Processor Time

낮은값

80% 이하

프로세서 시간을 차지하는 프로세스 확인/프로세서 업그레이드(파일,프린트서버) 추가고려(응용프로그램서버), 서버분산,

인터럽트를 유발시키는 카드확인 / 대체

Processor\%Privileged Time

낮은값

75% 이하

Processor\%User Time

낮은값

75% 이하

Server Work Queues\Queue Length

낮은값

2 이하

System\Processor Queue Length

낮은값

2 이하

Processor\Interrupts/sec

낮은값

-

PhysicalDisk\% Disk Time

낮은값

50% 이하

페이징이 발생하는지 확인한다. 페이징 문제라면 메모리 성능을 다시 점검하고, 페이징 문제가 아니라면 디스크 서브시스템을 업그레이드 한다.

PhysicalDisk\

     Current Disk Queue Length

낮은값

0-2

디스크 서브 시스템을 업그레이드한다.

PhysicalDisk\

     Avg. Disk Bytes/Transfer

낮은값

-

PhysicalDisk\Disk Bytes/sec

낮은값

-

Server\Bytes Total/sec

높은값

-

네트워크 어댑터 추가 고려/

물리적인 네트워크 업그레이드/

네트워크 분할 고려

Server\Logon/sec

높은값

-

Server\Logon Total

높은값

-

Network Interface\Bytes Sent/sec

높은값

-

Network Interface\Bytes Total/sec

높은값

-

* 참고자료 : Microsoft Technet 사이트

 

 

11-3-4-2. 기준치(Baseline)를 마련하자. (성능모니터 카운터 로그)

 

앞에서는 실시간으로 서버를 모니터링한 수치를 들여다 보았다. 어느날 사용자들이 네트워크가 서버가 너무나 느리다고 불평을 하고 있다고 가정을 해 보자. 그럴때 당신은 어떤 작업을 해야 하는가? 서버가 왜 느린 것인지를 판단하기 위해 성능 모니터를 열고 몇가지 카운터를 추가해 보았다. 하지만 그러한 카운터만으로 서버가 어디에 문제가 생긴것인지를 판단한다는 것은 너무나 막연하지 않은가? , 막연히 CPU가 느려서일거라는 판단에 CPU를 업그레이드했지만 여전히 서버는 나아진 성능을 제공해 주지 못하고 있다면 누구를 나무랄 것인가? 그러한 경우에 판단근거로 삼을 수 있는 근거치가 필요해 지는데 서버가 잘 동작할 때 카운터들을 기록해 두었다가 서버가 문제가 생겼다고 판단되는 시점에서 해당 카운터들을 다시 모니터링 해 본다면 기준치와의 차이점을 발견할 수 있을 것이다. 그렇다면 그 카운터에 해당하는 개체가 바로 시스템에서 병목현상을 일으키고 있는 주범이라고 할 수 있을 것이다.

 

CPU는 지속적으로 80%이상 사용되어서는 곤란하다거나 하는 식의 객관적인 수치는 현실성이 떨어진다. 회사의 상황에 따라서 얼마든지 달라질 수 있는 판단이기 때문에 그러한 객관적인 수치는 어디까지나 일반적인 판단일 뿐이고 여러분의 회사 나름대로의 기준치를 마련하는 것은 필수적인 작업이라고 할 수 있다.

 

이러한 경우에는 성능 모니터의 카운터 로그기능을 사용하여 일정시간동안 서버의 성능 카운터들을 로깅하여 기준치를 마련할 수 있다


<그림11-74. 카운터 로그 설정 1>

성능모니터를 열고 왼쪽패널에서 카운터 로그를 마우스 오른쪽 클릭하여 새 로그 설정을 실행한다.

 


<그림11-75. 카운터 로그 설정 2>

새 로그 설정 화면에서 로그의 이름을 입력했다. 예제에서는 ‘My Log’라고 하였다.


<그림11-76. 카운터 로그 설정 3>

[추가]버튼을 눌러서 로깅하고자 하는 카운터를 선택한다. 다양하게 선택하는 것이 좋다. 특히 서버의 성능판단에 큰 요인이 되는 메모리, 프로세서, 물리디스크 등의 개체에 대해서는 전체 카운터들을 추가하였다. 데이터 샘플 간격에 따라서 카운터 수치를 측정하는 회수가 달라진다. 이 간격이 짧을수록 자주 카운터를 측정할 테니 정확한 데이터를 산출할 수 있다고 생각할 수도 있겠지만 특정시간대에 서버의 수치가 지나치게 높다거나 했을 때 그 시간대의 수치가 평균치를 높일 수도 있다는 것을 고려해야 한다. 1분 간격을 설정하면 하루에 1,440번 카운터 수치를 기록할 것이다. 2분 정도로 설정할 것을 권장한다.


<그림11-77. 카운터 로그 설정 4>

다음엔 로그파일 탭으로 이동하여 로그파일 종류를 선택하였다. 필자는 CSV 타입으로 선택하였다. 마이크로소프트의 엑셀프로그램으로 읽을 수 있는 파일타입이다. 엑셀 형태로 데이터를 뽑아 낼 수 있다면 당신이 맘 먹는대로 데이터 변환이 가능할 것이다. 또한 차트나 각종 테이블을 만드는데 아주 유용하게 쓰일 수 있다.

 


<그림11-78. 카운터 로그 설정 5>

마지막으로 일정탭을 열어서 로그시작시간과 로그중지 시간을 설정하였다. 측정을 하는 대상이 회사에서 쓰는 파일서버라고 가정하면 직원들이 한참 접근하여 쓰는 시간이 중요할 것이다. 그때는 오전9부터 오후 5까지 정도를 측정한다. 이렇게 3일 정도를 계속 측정해 볼 것이다. 그렇게 하면 어느정도 정확한 평균치를 구해낼 수 있을 것이다. 시작시간과 중지시간을 스케쥴 할 수도 있고, 수동으로 작업할 수도 있다. 예제에서는 수동으로를 선택하였다.


<그림11-79. 카운터 로그 설정 6>

[확인]버튼을 눌러서 마치고 나오니 오른쪽 패널에 My Log 라는 로그가 하나 추가된 것을 확인할 수 있다. 마우스 오른쪽 클릭하여 시작을 누르면 로깅이 시작된다.

 


<그림11-80. 카운터 로그 설정 7>

원하는 시간까지 로깅을 하고 나면 같은 방법으로 중지를 눌러서 로깅을 마친다.

 

 


<그림11-81. 카운터 로그 설정 8>

이렇게 로깅된 파일은 시스템 모니터를 통해서 확인할 수 있다. 시스템 모니터를 클릭하고 도구모음 중에서 로그 파일 데이터 보기를 선택하였다<그림11-81>.

 


<그림11-82. 카운터 로그 설정 9>

저장된 위치에서 로그파일을 선택하고 [열기]를 클릭한다.

 


<그림11-83. 카운터 로그 설정 10>

예제에서 파일을 열었지만 달라진 것이 없어보인다. 다시 + 버튼을 눌러서 로깅된 파일에서 원하는 카운터를 들여다 봐야 한다. + 버튼을 눌렀다.

 


<그림11-84. 카운터 로그 설정 11>

성능개체를 클릭하니 처음 했던 것과는 달리 몇가지 밖에 안 나오는 것에 주목하자. 이것은 실시간 데이터를 보기 위한 것이 아니라 로깅파일로부터 보는 것이기 때문에 모든 개체가 아니라 로깅할 때 선택했던 개체와 카운터에 대해서만 볼 수가 있는 것이다.

 


<그림11-85. 카운터 로그 설정 12>

보고자 하는 카운터를 선택하니 <그림11-85>와 같은 화면이 열린다. 이것은 일정시간동안 로깅된 정보를 보여준다.

 


<그림11-86. 카운터 로그 설정 13>

멋진 옵션이 숨어있다. 왼쪽패널의 시스템 모니터의 등록정보를 열고 원본탭을 열면 시간범위를 지정할 수 있다. 로깅된 전체데이터중에서 보고자 하는 시간동안의 데이터만 선택하여 보는 것도 가능하다.

 

보기 범위를 조정한 다음 [확인]버튼을 눌렀다.


<그림11-87. 카운터 로그 설정 14>

<그림11-87>에서는 선택된 시간동안의 데이터만 보여주는 것을 확인할 수 있다. CSV 포맷으로 로깅되었으므로 이렇게 성능 모니터를 통해서 들여다 볼 수도 있지만 Excel 프로그램에서 불러와서 수치를 놓고 원하는 데이터를 만들어 낼 수 있을 것이다.

 

<참고> 무엇을 측정하여 기준치를 마련할 것인가?

측정할 자원

측정할 성능개체

메모리

Memory, Cache

프로세서(CPU)

Processor, System, Server Work Queues

디스크 서브시스템

Physical Disk, Logical Disk

네트워크 서브시스템

Server, Network Interface, Network Segment

기타

SQL Server, WINS Server, Browser, 기타 성능개체들

 

11-3-4-3. 네 상태를 내게 알려줘? (성능모니터 경고기능)

 

서버가 현재 어떤 상태에 놓였는지는 서버가 다운이 되었다거나 해서 응답이 없을때까지 모르는 것이 일반적인 상황이다. 하드디스크의 여유공간이 얼마 남지 않았다든가 서버가 바이러스에 감염되어 CPU활용도가 지속적으로 99%에 이르렀다거나 메모리 사용량이 많아서 지속적으로 페이징이 발생하여 메모리의 업그레이드나 어플리케이션의 분산을 고려해야 한다면 문제가 발생했을 때 관리자는 그러한 사실을 바로 알고자 할 것이다. 그럴때 성능모니터의 경고기능은 유용하다.

 

예제에서는 서버가 CPU 활용시간이 90%이상 넘어가면 관리자에게 알림메시지를 주도록 설정하고자 한다.


<그림11-88. 경고 설정 1>

성능모니터 관리도구에서 왼쪽패널의 경고를 마우스 오른쪽 클릭하여 새 경고 설정을 연다.

 


<그림11-89. 경고 설정 2>

새 경고설정 화면에서 구별할 수 있는 이름을 입력해 준다.

 


<그림11-90. 경고 설정 3>

어떠한 카운터를 모니터링 할 것인지를 결정해야 하는데 예제에서는 Processor 개체의 Processor Time 카운터를 선택했다. ‘값이 다음일 때 경고 표시옆의 드롭다운 콤보박스를 클릭하여 초과를 선택하고, 제한값에는 90 이라고 입력하였다.

 

이때 데이터 샘플 간격은 중요한 의미를 가진다. 서버에서 일시적으로 특별한 어플리케이션이 실행될 때 CPU타임이 90%이상 올라가는 것은 어떻게 보면 당연한 일이라 할 수 있는데 이 데이터 샘플 간격을 너무 짧게 잡으면, 예를 들어 ‘1라고 잡았다면 짧은 순간 CPU타임이 90%이상으로 올라갔을 때 그러한 내용을 측정하여 관리자에게 경고메시지를 보낼 수 있다. 결국 불필요할 정도로 많은 경고 메시지를 받아야 하는 경우도 있을 것이다. 또 이 시간이 너무나 길다면 일정시간 서버가 과도한 CPU사용에 시달리고 있더라도 미처 측정이 되지 않는 경우가 발생할 것이기 때문에 적당한 수치를 설정해야 할 것이다. 예제에서는 30초 라고 설정하였다.

 

이제 조건은 만들었다. 다음에 해야 할 작업은 이러한 조건에 만족했을때는 어떻게 할것인가라는 액션을 처리해야 한다.


<그림11-91. 경고 설정 4>

작업탭을 열어서 네트워크 메시지를 다음으로 보냄 wssong이라고 관리자가 사용하는 계정을 입력해 주었다. 이 서버는 앞의 조건에 만족하는 상황을 측정했을 때 wssong이라는 사용자 계정에게 메시지를 발송하게 된다. 이때의 wssong NetBIOS Name이다. 다음에 나오는 성능 데이터 로그 시작을 활성화하여 문제가 되는 상황을 발견했을때는 미리 정의된 로그를 시작하도록 설정할 수도 있다. 좋은 옵션이다. 특정한 문제가 발생되는 원인을 다각도로 분석해 보고자 할 때 미리 로그파일을 정의하고 로깅을 하게 되면 차후에 이 문제를 분석해 볼 수 있을 것이다.


<그림11-92. 경고 설정 5>

일정탭을 눌러서 역시 시간설정을 마쳤다.

 


<그림11-93. 경고 설정 6>

[확인]버튼을 눌러서 창을 닫으니 오른쪽 패널에 CPU Limit 라는 경고가 하나 설정된 것이 보인다. 녹색 아이콘이 활성화되어 있음을 보여준다. 이제부터는 이 서버는 30초마다 한차례씩 해당 카운터의 수치를 측정한다.

 


<그림11-94. 경고 설정 7> 

Wssong 으로 로그온한 사용자는 얼마후 다음과 같은 메시지를 받게 되었다. 내용을 읽어보면 BLUESERVER라는 이름의 서버에서 어떠한 상황이 발생했는지를 보여주고 있다.

 


<그림11-95. 경고 설정 8>

서버의 이벤트 뷰어를 열고 응용프로그램 로그를 열어보면 같은 메시지가 로깅된 것을 확인할 수 있다. 이것은 하나의 옵션으로써 구현된 것이다.