http://groups.google.com/group/mongodb-user/browse_thread/thread/528a94f287e9d77e?pli=1
영어의 압박과 귀차니즘을 느끼시는 분들을 위해 원문을 간단히 요약합니다.
원래 4스퀘어 체크인 DB는 아마존 EC2 솔루션에서 66기가 램 싱글 instance에서 돌아가고 있었으며, DB는 디스크가 아닌 램에 올라가 있었습니다.
(사용 DB는 Mongo DB)
그러다가 용량 증가로 동일 instance를 하나 더 늘리고, DB전체를 200개의 chunk로 쪼개서 서버0과 서버1에 반씩 넣어두는 형태로 개편했습니다.
(chunk는 알파벳 순서로..)
그러다 한 쪽 서버가 미상의 헤비유저 덕택에 66기가 램을 싹 채우고 하드디스크 사용을 시작하는 불상사가 벌어지고, 이 것이 4스퀘어의 사용자들이 토할 정도로 심하게 느리다고 불만을 토로했던 그 장애의 직접적인 원인 ;;;
결국 서버2를 긴급 증설해서 chunk를 분산수용했지만, 초저속 안드로메다는 도저히 해결되지 않고 ;;;;;;
결국 서버를 내리고 4시간동안 DB repair 를 감행합니다..
(체크인 데이터가 하나하나는 엄청 작은 4스퀘어 특성상 파일 하나하나는 블록 하나인 4KB보다 당연히 작고, 이 때문에 단편화 현상이 나타나 계속 용량을 차지한 상태에서 디스크 액세스가 계속되었기 때문에 서버 다운 결정..)
이후 서버를 대폭 증설하고 최적화까지 단행했다고 합니다 ;;;;;
자세한 내용은 원문 읽어보세요.
제가 mongoDB를 모르니 더 자세히는 번역을 못하겠네요.
귀찮기도 하고, 하나하나 직역하는 것보다는 원문을 보는게 더 나은 사실상의 기술문서이기도 하고요 ;;;
쓰고보니 이거 nerd를 위한 글입니다. ㅋㅋㅋ
2010년 10월 19일 화요일
2010년 9월 9일 목요일
서버 설정 삽질기..
개인적으로 사용하는 100dedi의 VPS 서버를 이전중입니다.
팟캐스트 서비스 중단 이후로 너무 심하게 남아도는 리소스가 많이 아까웠거든요...
그 와중에 몇 가지 에피소드가 발생하여 다른 admin 분들과 공유를 위해 쪽팔림을 무릅쓰고 포스팅합니다.
1. rsync 삽질 ;;
서버 이전시 데이터 이동은 몇 가지 다른 방법이 있지만, 저는 개인적으로 rsync를 가장 선호합니다.
rsync를 사용하면 퍼미션과 디렉토리 구조가 그대로 넘어가거든요.
rsync를 이용해서 MySQL DB를 그대로 넘기면 그렇게 편할 수가 없습니다. ;)
문제는 rsync할 디렉토리 지정할 때 마지막에 /를 빼먹으면 대형 참사가 벌어진다는 것입니다 ;;;;;;
예를 들어 /home 을 그대로 rsync로 옮긴다고 가정했을 때, rsync ~~~~~ :/home /home으로 했을 경우, 실제로는 /home/home 에 옮겨옵니다 ;;;;; OTL
그러므로 rsync ~~~~ :/home/ /home/ 으로 해줘야 합니다.
간단한 것이지만, 자세한 설명이 없으니 실수하기 딱 좋습니다 ;;;;;;
2. iptables 삽질
이상하게 ssh만 서버에 접속되더군요....
webmin이나 httpd 모두 분명히 netstat -l 해보면 listening 중이고, 서버 상단의 elcap에서도 분명히 열려 있는데 이상하다 싶었습니다.....
혹시나... 이럴리를 없는데... 진짜?? 싶어서......
service iptables stop 를 때려봤습니다...
(제가 사용중인 스마일서브는 서버 상단에 elcap이라는 호스팅사가 제공하는 방화벽이 있어서 iptables를 완전히 종료해도 서버 운영에 아무 지장은 없습니다. ^^;;)
갑자기 잘 접속됩니다 ;;;; OMG
iptables -L 해보니 호스팅사에서 기본으로 넣어둔 iptable 값이 뭐가 문제인지 22 포트빼고 싹 막는 값이었던 것 ;;;;;;;
3. PHP 설치..
Cent OS는 최신버전인 5.5에서마저 PHP는 5.1대 입니다 ;;;;
그냥 기본 yum으로는 제가 어쩔 방법 없이 그냥 PHP는 5.2에서 5.1로 내려야할 판국...
더욱이 그간 써오던 srpm rebuild가 MD5 오류를 내면서 계속 안되니 결국은 포기하고 소스 tarball 받아서 컴파일.... ㅠㅠ
그러다 우연히 구글링하다가 CentOS 내부 다큐먼트를 보았다.
CentOS 개발서버의 5.2 RPM을 CentOS 5 yum에 연결하는 내용이다. (링크)
다행히도 rm -rf / 은 아직 해본 적 없어서 다행이라 생각합니다 ;;; ㅎㄷㄷ
팟캐스트 서비스 중단 이후로 너무 심하게 남아도는 리소스가 많이 아까웠거든요...
그 와중에 몇 가지 에피소드가 발생하여 다른 admin 분들과 공유를 위해 쪽팔림을 무릅쓰고 포스팅합니다.
1. rsync 삽질 ;;
서버 이전시 데이터 이동은 몇 가지 다른 방법이 있지만, 저는 개인적으로 rsync를 가장 선호합니다.
rsync를 사용하면 퍼미션과 디렉토리 구조가 그대로 넘어가거든요.
rsync를 이용해서 MySQL DB를 그대로 넘기면 그렇게 편할 수가 없습니다. ;)
문제는 rsync할 디렉토리 지정할 때 마지막에 /를 빼먹으면 대형 참사가 벌어진다는 것입니다 ;;;;;;
예를 들어 /home 을 그대로 rsync로 옮긴다고 가정했을 때, rsync ~~~~~ :/home /home으로 했을 경우, 실제로는 /home/home 에 옮겨옵니다 ;;;;; OTL
그러므로 rsync ~~~~ :/home/ /home/ 으로 해줘야 합니다.
간단한 것이지만, 자세한 설명이 없으니 실수하기 딱 좋습니다 ;;;;;;
2. iptables 삽질
이상하게 ssh만 서버에 접속되더군요....
webmin이나 httpd 모두 분명히 netstat -l 해보면 listening 중이고, 서버 상단의 elcap에서도 분명히 열려 있는데 이상하다 싶었습니다.....
혹시나... 이럴리를 없는데... 진짜?? 싶어서......
service iptables stop 를 때려봤습니다...
(제가 사용중인 스마일서브는 서버 상단에 elcap이라는 호스팅사가 제공하는 방화벽이 있어서 iptables를 완전히 종료해도 서버 운영에 아무 지장은 없습니다. ^^;;)
갑자기 잘 접속됩니다 ;;;; OMG
iptables -L 해보니 호스팅사에서 기본으로 넣어둔 iptable 값이 뭐가 문제인지 22 포트빼고 싹 막는 값이었던 것 ;;;;;;;
3. PHP 설치..
Cent OS는 최신버전인 5.5에서마저 PHP는 5.1대 입니다 ;;;;
그냥 기본 yum으로는 제가 어쩔 방법 없이 그냥 PHP는 5.2에서 5.1로 내려야할 판국...
더욱이 그간 써오던 srpm rebuild가 MD5 오류를 내면서 계속 안되니 결국은 포기하고 소스 tarball 받아서 컴파일.... ㅠㅠ
그러다 우연히 구글링하다가 CentOS 내부 다큐먼트를 보았다.
CentOS 개발서버의 5.2 RPM을 CentOS 5 yum에 연결하는 내용이다. (링크)
다행히도 rm -rf / 은 아직 해본 적 없어서 다행이라 생각합니다 ;;; ㅎㄷㄷ
라벨:
서버,
서버관리자,
admin,
Server admin
피드 구독하기:
글 (Atom)