서버점검, 과연 무엇을 해야 할까? -2/?-
2009년 01월 04일 일요일, 오전 1시 25분아주 오래 전에 아래와 같은 글을 포스팅 한 적이 있었습니다.
http://nice19.net/blog/index.php/archives/335
시간이 다소 지났지만, 그래도 마무리는 해야겠다는 생각에 계속 끄적여 보려고 합니다. 다음편을 올려달라고 독촉하셨던 분들은 없었지만 그래도 보잘 것 없는 글을 참고해 주셨던 분들께 다음 글이 너무 늦어져서 죄송하다는 말씀부터 드리고 싶습니다는 사실 훼이크고 제 마음이니 그냥 그려러니 양해해 주십시오…
그럼, 거두절미하고 바로 본문으로 들어 가겠습니다.
웹호스팅 서버와 같이 한 서버에서 구동되고 있는 웹사이트가 다수일 경우, 문제가 되는(사용량이 많은) 웹사이트를 찾아내기란 솔직히 생각 만큼 쉬운 일이 아닙니다. 그래도 좌절하지 마세요. 윈도우즈 서버 2003에서 기본적으로 제공하는 '성능' 이라는 기능이 있으니까요.
그 전에 한 가지 집고 넘어갈 것이 있습니다. 특정 웹사이트의 사용량이 많아지는 경우에는 크게 두 가지가 있습니다.
첫째, 웹사이트가 무겁다. 그래서 H/W 자원이 많이 필요하다.
둘째, 방문자가 많다. 그래서 H/W 자원도 네트워크 자원도 많이 필요하다.
이렇게 정의만 해 드리면 선뜻 이해가 되지 않으실 수 있으므로 제 경험담을 곁들여 보겠습니다. 제가 경험해 본 것 중에 첫째에 해당 되는 경우는 네비게이션 및 지리 정보를 Activex를 통해 제공하는 웹사이트 입니다. CPU와 RAM에 아주 빨대 꼽고 쭉쭉 빨아 드셔서 처리하는데 굉장히 곤란했던 기억이 납니다.
'웹사이트가 무겁다.' 라는 얘기는 위와 같이 Activex 등을 통해 무언가 응용프로그램 서비스를 제공하는 웹사이트들에 통용되는 경우가 많습니다.
제가 경험해 본 것 중에 둘째에 해당 되는 경우는 네이버 실시간검색순위 1위에 등극되었던 모 쇼핑몰 사이트 입니다. 트래픽 빼느냐고 아주 죽는 줄 알았습니다… 지금도 다시 떠올리고 싶지 않네요…-_-;; 후우~
방문자가 많아서 서버에 부하가 걸리는 경우는 우리가 쉽게 접할 수 있는 온라인게임에서 '렉'이라는 용어로 불리우고 있습니다. 한번쯤은 들어보신 적 있으시죠? 서버가 처리할 수 있는 량이 100개인데 1000개의 요청이 들어오면 서버에 부하가 걸리게 되고, 끝내 서비스 불능 상태가 되어 버립니다. 뿐만 아니라 네트워크 자원에도 문제가 생기겠죠. 보통 서버에는 100m/bps 또는 1g/bps의 회선이 연결됩니다. 이것은 말 그대로 회선의 대역폭을 의미합니다. 초당 100m 또는 1g의 데이터가 소통될 수 있는 일종의 '고속도로'인셈이죠. 그런데 그 이상의 데이터가 중첩되어 쌓인다면? 네, 그렇습니다. 길이 막혀 버리는 겁니다.(high traffic)
그럼, 지금 이 난감한 상황이 첫째의 경우인지 둘째의 경우인지 어떻게 구분할 수 있을까요. 쉽게는 '작업관리자'의 '네트워킹' 탭을 통해 확인할 수 있습니다.
# 평화로운 서버의 모습…
방문자가 폭주하여 네트워크 자원이 심하게 소실되고 있다면 당연한 얘기겠지만, '네트워킹' 탭의 '네트워크 이용율'이 대단히 높은 수치를 기록하고 있을 것입니다.(물론, 100%를 기록하는 경우도 허다합니다.)
첫째의 경우, 단순히 H/W 자원의 사용량이 많은 것이기 때문에 네트워크 자원에까지 영향을 미치는 경우는 극히 드뭅니다. 따라서 '작업관리자'의 '네트워킹' 탭을 확인함으로써 정확하게 어떤 원인으로 인해 웹사이트의 사용량이 과다하게 발생하고 있는지 구분할 수 있습니다.
'성능' 기능을 통해 본격적인 색출 작업에 나서기 앞서 한 가지만 더! 지난 글에서 문제가 되는 응용프로그램풀을 색출하는 방법을 설명해 드린 바 있습니다. 현재는 서버에서 구동되고 있는 웹사이트가 너무 많다보니 정확하게 어떤 웹사이트가 문제가 되고 있는지 확인하기 전입니다. 하지만, 이대로 서버를 방치할 수는 없는 일입니다. 따라서 약간의 리스크를 감수하더라도 문제가 되는 응용프로그램풀에 조치를 취해 주도록 합니다. 같은 응용프로그램풀에 속해 있는 죄 없는 다른 웹사이트들은 어쩔 수 없습니다. 지못미…
해당 응용프로그램풀의 속성 메뉴로 진입합니다. 3가지 정도를 수정하게 될 것입니다. 우선 위의 그림파일을 참고해 주세요. '사용된 최대 메모리'라는 항목은 응용프로그램풀의 메모리 사용량을 제어해서 관리자가 설정해 놓은 메모리 사용량을 초과하면 자동으로 응용프로그램풀을 재생시키는 것입니다. 서버 사양과 응용프로그램풀에 속해 있는 웹사이트의 총 개수를 고려해서 설정해 주세요. 보통 150~300 이내로 설정해 주면 무난하다고 생각합니다.
다음으로 '성능' 탭으로 이동해 주세요. 여기서 2가지 항목을 설정해 줄 것입니다. 우선 '요청 큐 제한' 항목입니다. IIS 기본 설정이 1000으로 되어 있는데 이것을 혹시 상향 조정하셨다면 다시 1000으로 롤백해 주십시오. 그리고 'CPU 모니터링 사용' 항목입니다. 관리자가 설정해 높은 CPU 사용량을 초과하면 그 이후의 요청에는 응답을 하지 않는 것입니다. 단순히 웹 서버로만 사용하고 계시다면 70~80으로 설정해 주시면 무난하겠으나 만일 DB 서버와 겸용으로 사용하고 계시다면 40~60 정도가 무난하다고 생각합니다.
마지막으로 '상태' 탭으로 이동해 주세요. 그리고 '오류 급증 시 보호 기능 사용'을 비활성화 하여 H/W 자원 부족으로 해당 응용프로그램풀의 오류가 급증하여 자동으로 중지되는 것을 방지합니다.
여기까지 완료되셨다면 확인 버튼을 눌러 저장하고 빠져 나오시기 바랍니다.
저도 아직 능숙하지 않지만, 서버에 부하가 발생했을 때 얼마나 단 시간 내에 그리고 얼마나 리스크 없이 처리하는가는 순수하게 서버관리자의 상황 판단에 의해서 좌지우지 됩니다. 왜냐하면 이미 본격적으로 서버에 부하가 발생한 상태라면 제 아무리 마크 미나시 할아버지가 와도 아무것도 할 수 없습니다. 네트워크 자원이 전부 소진되었다면 원격터미널로도 접속되지 않을테고, H/W 자원이 전부 소진되었다면 이건 뭐 386 컴퓨터도 아니고…
'설마 아닐꺼야. 조금만 지켜보자.' 라는 마음가짐으로 서버를 잠시 방치해 두었다가는 서비스 불능 상태가 되어 버릴 수 있습니다. 판단 미스 하나로 리스크가 몇 배로 커져 버리는 것이죠.
제 말씀의 요지는 낌새가 이상하다면 무조건 의심부터 해 보시기 바랍니다.
그럼, 본격적인 '성능' 모니터링은 다음 포스트에서 이어서 해볼까요? -_-;; 시간이 벌써 이렇게… 너무 늦었습니다. 다음 포스트에서 '1. 작업관리자' 부분은 비로서 종결되겠군요.
태그: Windows server 2003, 서버 관리, 서버 점검, 윈도우즈 서버 2003




