여기에서는 IIS 서버 성능향상을 위해서 Windows 2000 도구를 사용하는
방법과 모니터링과 조정을 통해 전체 성능을 향상시키는 방법에 대해서 알아보자.
성능향상을 위해 알아야 할 것들 : 성능 문제를 설명하는 개념 정보 이해하는 법.
메모리 관리는 어떻게 할 것인가 : 디스크 액세스 속도를 기준으로 메모리 조건을 맞추는 법.
프로세서 병목 현상을 찾아라 : 프로세서 병목 현상 확인 및 응용 프로그램에 의한 프로세서 사용 조절법.
네트웍 용량 최대화 하기 : 네트워크 용량 계획 및 연결 성능 최대화 방법.
성능향상을 위해 알아야 할 것들
만족스러운 최적의 서버 성능을 발휘하기 위해서는 서버의 제공 서비스에 따라
필요한 적절한 세팅과 하드웨어 설계가 달라져야 한다.
예를 들어 자신의 서버가 웹서비스보다 적은 메모리를 사용하는 FTP 서버인지, 아니면 ASP(Active Server Pages) 응용 프로그램, CGI(Common Gateway Interface) 스크립트, 데이터베이스 쿼리, 비디오 파일과 같은 프로세서 집중이 이뤄지는 웹서버인지 구분이 필요하다.
서버의 성능을 효과적으로 조정하려면 다음과 같은 절차가 필요하다.
성능조정을 위한 모니터링 테스트 전략을 세우고
적절한 성능 모니터링 툴을 사용하여 모니터링과 세팅을 하고
마지막으로 디스크 최적화를 해야 한다.
성능조정을 위한 모니터링 테스트 전략 세우기
성능 테스트 및 조정은 진행 중인 프로세스에서 이뤄진다. 효과적으로 테스트하고 조정하려면, 평가 전략을 먼저 세워야 하며, 첫 단계는 현재 성능 수준을 측정하는 것이다. 서버 성능은 시간에 따라 크게 달라질 수 있으므로, 서버의 전반적인 실제 활동을 파악할 수 있을 만큼 오랫동안 그리고 가장 부하가 많이 걸리는 시간에 모니터링해야 한다.
서버 성능을 개선하려면, 병목 현상이 일어날 수 있는 시스템의 모든 부분을 검사해야 한다. 병목은 하드웨어를 부적절하게 구성하거나 IIS나 Windows 2000의 소프트웨어 설정이 제대로 되지 않았을 경우에 발생할 수 있다.
일단 서버 수행 방법을 알고 나면, 성능 개선을 목표로 각 사항을 변경하면 된다. 한 번에 하나씩 바꾸어야 하며, 그렇지 않은 경우에는 각 변경 사항의 영향을 평가하기가 어려워진다.
각 사항을 바꾸고 난 후에는 변경 사항이 원하는 효과를 내는지 여부를 계속해서 모니터링해야 한다. 한 리소스의 변경 사항이 다른 영역에서는 병목을 야기할 수 있으므로, 바꾸고 난 후에는 모든 리소스의 성능을 확인해야 한다. 일단 변경 사항의 영향을 평가하고 나면, 향후 변경이 필요한지 그 여부를 결정할 수 있다.
적절한 성능 모니터링 툴을 사용하여 모니터링하기
서버 모니터링은 서버 관리의 중요한 부분이다. 적절한 모니터링 도구를 사용하면 서버 문제를 감지하거나 웹 사이트 컨텐트를 변경한 결과를 평가하거나 웹 사이트를 사용자가 더 쉽게 액세스할 수 있도록 업그레이드할 계획을 세울 수 있다.
모니터링 도구와 방법은 필요한 정보에 따라 다르게 선택해야 한다. 예를 들어, 웹 서버의 전체 로드를 측정하려면 시스템 모니터로 한 주 계획을 만들어서 연결된 컴퓨터와 전송된 파일의 개수 등의 정보를 표시하도록 한다.
다른 예로, 서버의 성능이 점점 저하되는 것을 알았다면 Windows 2000이 만든 로그 확인 도구인 이벤트 뷰어에서 오류를 확인할 수 있다.
Windows 2000에 사용할 수 있는 다음 모니터링 도구는 매순간의 정보와 요약 정보를 모두 제공합니다.
시스템 모니터
이벤트 뷰어
작업 관리자
네트워크 모니터
시스템 모니터
시스템 모니터는 서버의 활동을 모니터링하고 선택한 시간 간격으로 서버의 성능을 요약하는 데 사용되는 강력한 도구이다. 시스템 모니터를 사용하여 실시간 차트나 보고서에 성능 데이터를 표시하거나 파일에 데이터를 모으거나 치명적인 이벤트가 발생했을 때 알려 주는 경고를 만들 수 있다.
시스템 모니터는 카운터의 결과를 확인하며 이 카운터는 특정 개체의 활동 즉, 특정 서비스 또는 서버 리소스를 제어하는 메커니즘을 모니터링한다. 예를 들어, Web Service라는 개체를 보면 초당 수신 바이트 수 또는 초당 연결 시도 횟수를 모니터링하는 카운터를 볼 수 있다.
Windows 2000에는 많은 카운터가 있으며 IIS를 설치하면 웹 서비스 카운터, FTP 서비스 카운터, Active Server Pages 응용 프로그램 카운터 및 IIS 글로벌 카운터를 비롯하여 특별한 카운터를 설치한다. 웹 서비스 및 FTP 서비스 카운터와 Active Server Pages 응용 프로그램 카운터는 연결 활동을 모니터링하고 IIS 글로벌 카운터는 대역폭 사용법과 모든 IIS 서비스에 대한 캐시 활동 등을 모니터링한다.
시스템 모니터는 서버 및 사이트의 로드에 대한 단기 및 장기 정보를 제공한다.
다음 표는 마이크로소프트에서 권고한 서버 모니터링에 유용한 시스템 모니터 카운터 및 값 목록이다.
개체\카운터 이상적인 값
메모리\Pages/Sec 0-20 (80이 넘으면 문제가 생깁니다.)
메모리\Available Bytes 최소 4 MB
메모리\Committed Bytes 실제 메모리 크기의 75 % 이하
메모\Pool Nongpaged Bytes 안정 (느리게 올라가는 것은 메모리 누락을 의미합니다.)
프로세서\% Processor Time 75 % 이하
프로세서\Interrupts/sec 프로세서에 따라 다름. 486/66 프로세서용으로 1,000까지, P90용으로 3,500, P200용으로 7,000 이상. 낮을수록 좋음
프로세서\System Processor Queue Length 2 이하
디스크(논리 또는 실제)\% Disk Time 가능한 한 낮게
디스크(논리 또는 실제)\대기열 길이 2 이하
디스크(논리 또는 실제)\Avg. Disk Bytes/Transfer 가능한 한 높게
인터넷 정보 서비스 글로벌\Cache Hits % 가능한 한 높게
웹 서버\Bytes Total/sec 가능한 한 높게
Active Server Pages\Request Wait Time 가능한 한 낮게
Active Server Pages\Requests Queued 0
Active Server Pages\Transactions/sec 가능한 한 높게
이벤트 뷰어
Windows 2000에는 이벤트 로깅 서비스가 있으며 이 서비스는 서비스 오류나 서비스의 성공적인 시작 등의 이벤트를 기록한다. 이 이벤트 로그들은 이벤트 뷰어를 사용하여 볼 수 있다. 이벤트 뷰어를 사용하여 시스템, 보안, 응용 프로그램 이벤트 로그를 모니터링할 수 있다. 이 정보를 보면 특정한 성능에 문제가 생기기까지 발생한 이벤트의 순서와 종류를 더 잘 이해할 수 있다.
작업 관리자
작업 관리자는 진행 중인 작업과 스레드를 보는 데 사용할 수 있다. 또한 우선 순위로 할당된 프로세스를 바꾸는 데도 사용할 수 있다. 그러나 일단 프로세스가 완료되면, 새 우선 순위 설정은 없어진다. CPU 및 메모리 사용법은 실시간으로 볼 수 있지만, 시간에 대한 정보는 저장되지 않는다.
네트워크 모니터
네트워크 모니터는 컴퓨터에서 양방향 소통량 정보를 캡처할 뿐만 아니라 보내고 받은 프레임에 대한 자세한 정보를 제공한다. 이 도구는 네트워크 소통량에 대한 복잡한 양상을 분석하는 데 도움이 된다. 네트워크 모니터를 사용하여 사용자 서버의 HTTP 및 FTP 요청에 포함된 헤더 정보를 볼 수 있다. 일반적으로 캡처 필터는 데이터베이스 쿼리처럼 작동하며 전송된 프레임의 하위 집합을 선발하는 데 필요하다. 실행 가능한 파일 시작 등의 작업을 초기화하여 네트워크의 이벤트에 응답하는 캡처 트리거를 사용할 수도 있다.
마지막으로 디스크 최적화를 해야 한다.
하드 디스크 병목 현상은 대용량 파일이 수시로 액세스되는 사이트에서 자주 볼 수 있다. IIS가 하드 디스크를 액세스하는 횟수는 RAM 용량과 요청된 파일 수 및 크기에 직접적인 연관이 있다. RAM 용량이 적고 다른 파일을 많이 요청하거나 요청된 파일 크기가 크면 IIS는 RAM에 파일의 사본을 유지하여 빠른 액세스를 할 수 없다. 이러한 경우 IIS는 하드 디스크에서 파일을 액세스해야 한다. 액세스 속도와 하드 디스크의 크기에 따라 IIS가 요청된 파일을 찾는 속도가 결정된다.
디스크 드라이브를 모니터링하려면, 시스템 모니터를 사용하여 활용된 CPU의 백분율, 네트워크 카드 포화 상태, 실제 디스크 개체의 '디스크 시간 카운터'를 로그한다. '디스크 시간 카운터'가 높고 CPU 및 네트워크 카드의 포화 상태가 충분하지 않으면, 디스크 드라이브에 병목 현상이 생긴다.
이런 상황에서 디스크 액세스를 개선하려면 RAID(Redunadnt Array of Inexpensive Drives)나 스트라이프 디스크 세트를 사용하는 것도 좋다. 서버가 데이터베이스 작업에 많이 사용되는 경우에는 기가바이트가 넘는 RAM이 필요할 수 있다. 그러면 액세스 지연이나 대용량 RAM 캐시가 있는 드라이브 컨트롤러를 최소화할 수 있기 때문이다. 또한 하나의 드라이브가 작동을 멈췄을 때 백업 복사본에서 복원하지 않으려면 중복성을 유지해야 한다. 많은 새 컨트롤러가 '핫 스와핑'을 허용하므로, 드라이브에 오류가 발생하였을 때 서버가 다운되지 않고 바꿀 수 있다. 그런 경우라도 백업을 제대로 유지하고 사이트 외부에 복사본을 두는 것이 좋다.