노스모크웹호스팅프로젝트

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS
노스모크가 고질적인 운영비 문제에 시달리고 있다(see 노스모크운영비현황). 따라서 운영비를 충당하거나 절감 해야한다. 그렇지 않으면 노스모크는 사라진다. 그 중에서 운영비를 절감하는 방법을 생각해보자. 현재는 독립서버를 쓰는 터라, 월 60,000원이나 든다. 사용하는 만큼만 지불하는 괜찮은웹호스팅을 쓴다면 운영비가 많이 절감되지 않을까? 현재의 트래픽과 용량만을 계산해 본다면, 현재의 1/8에 지나지 않는 [http]매월 7,200원, 매년 86,400원 정도로 줄일 수 있다. 그런데, 노스모크는 지금까지 한 차례 웹호스팅 회사에서 쫓겨나서 독립 서버를 CyberLaw와 함께 쓰고 있다. 쫓겨난 이유는 트래픽이나 용량, 속도 문제가 아니라 'CPU와 하드 디스크의 지나친 부하' 때문이었다(see 위키의기술적인한계, 노스모크이전문제, 이차노스모크이전). 새로운 위키엔진을 쓰거나 현재의 노스모크모인모인을 개선한다면 훨씬 나아지지 않을까?

이에 대하여 서상현은 실제로 어느 부분에서 부하가 많이 걸리는지 찾아내는 프로파일링 작업을 먼저 해야한다고 답했다. 파이썬에서는 프로파일링을 할 수 있는 함수를 기본적으로 제공한다. 노스모크의 프로파일링을 할 수 있는 사람은 노스모크계정관리자이다. 노스모크계정관리자/문제해결요청에 부탁하자.


간단한 생각들.
  • 부하가 가장 많이 걸리는 페이지는 RecentChangesFindPage가 아닐까?
    RecentChanges가 실제 전송량의 약 14%를 차지하고 있다. FindPage도 비슷하다. (see 노스모크통계) 도합 30% 가량이다. 가장 비중이 큰 페이지라고 봐도 무관할 정도이다.
  • 부하가 가장 많이 걸리는 파일은 노스모크모인모인 실행 파일과 editlog가 아닐까? 모든 파일의 수정과 파란아이RecentChanges가 의존한다.
    램 드라이브에 올리거나 MySQL, 또는 변수에 올리면 더 좋지 않을까?
  • 검색을 빠르게 하기 위하여 데이터베이스에 올리면 어떨까?
    http://hosting.cafe24.com 에서 비교한 결과, MySQL과 폴더에 모두 노스모크의 11월 1일자 데이터 5900여 페이지를 올려서 '최종욱'을 검색할 때, MySQL은 0.06~0.1초 대로 응답했고(대부분 0.06초), grep은 0.09~0.2초 대로 응답했다(대부분 1초). MySQL(데이터 베이스)이 grep(텍스트 파일)보다 검색 속도가 약 2배 정도 빨랐다.

대부분의 웹호스팅은 CPU 로드에 매우 민감하다. 트래픽의 문제 이전에 부하 때문에 거부되거나 쫓겨날 가능성이 높다. 위키엔진을 바꾸더라도, DaNew가 볼 때 노스모크는 방문객이 폭증하는 현실상 앞으로도 서버호스팅일 수 밖에 없다. CyberLaw님의 호의 덕분에, 매월 6만원에 서버호스팅을 누릴 수 있는 것은 매우 저렴한 편이지만, 노스모크가 입주한 금강서버의 비용 월 15만원의 내역에 따라서는 더욱 절감이 가능할지도 모른다. 리눅스원 홈페이지를 살펴보니 15만원 전체가 회선료인 것 같지는 않다. (혹시 코로케이션?) 렌탈 서버 등의 임대비가 드는 것이라면, 일일호프를 열든가 해서 기금을 모아 남은 서버이전비를 정산하고 회선료만 낼 수 있도록 하는 것이 장기적으로 좋다고 생각한다.

하지만 CPU 부하라던가 메모리 점유에 대해서 좀 더 관대한 곳을 찾으면 어떨까? 감기군이 볼때는 자신이 꽤나 많은 사이트를 수용하고 있는 서버를 운용하고 있긴 하지만, 여러 부분에서 봤을때 아직 널널하다는 판단 아래 서버를 운용하고 있다. 사실 서버의 부하는 서버를 어떻게 튜닝하느냐에 달렸다고 감기군은 생각한다. 감기군은 괜찮은웹호스팅에 있는 모 서비스를 운영하고 있는데, 여태껏 운영하면서 아무리 많은 Request가 들어와도 그렇게 큰 문제 없이 잘 돌렸다. 그래서 감기군은 트래픽만 넘지 않고 지나친이 아닌 '심각한'이 아니라면 되도록이면 편의를 봐주는(감기군은 상황에 따라서는 회선비 정도만 받고 돌려줄때도 있다.) 그런 식의 운영을 하고 있다. '심각한' 수준이라면 그것의 근거가 충분해야만 쫓아 낼 수 있다고 본다. 서버 운용하기 어렵다고 무조건 쫓아내는건 서버 관리자의 귀찮음으로 밖에 생각 할 수 없다. 어쨌거나 그런 부분에 좀 관대한 곳을 찾아서 한번 문의를 해보는건 어떨까 생각해본다. --감기군


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>