mongo db sharding 테스트
- Posted at 2010/12/17 16:25
- Filed under project/neptune
최근 대용량으로 끊임없이 전송되는 로그성 데이터를 저장할 수 있는 저장소로 어떤 NoSQL 솔루션을 사용하면 좋을지에 대해 검증중입니다.
현재까지 테스트한 솔루션은 cloudata(www.cloudata.org), hbase 입니다. hbase 테스트 결과는 http://www.jaso.co.kr/411 에 있습니다.
cloudata는 hbase와 동일합니다.
오늘은 mongo db의 sharding 구성에 대해 테스트를 했습니다. 테스트는 처음에는 여러 서버로 샤딩을 구성해서 진행하다가 테스트가 정상적으로 진행이 되지 않아 두대의 서버만 구성해서 테스트를 수행했습니다.
- 데이터 서버(mongod): 2대, replica-set 구성은 하지 않음
- config 서버: 3대(데이터 서버에 1대 더 추가)
- mongos: 데이터 서버 사용
- 테스트 클라이언트: 1대, 싱글쓰레드
테스트를 수행하면 첨부한 파일과 같이 대략 500 ~ 1000 TPS가 나타납니다. 하나의 클라이언트로만 테스트 했기 때문에 이 TPS가 mongo db의 최대 성능은 아닙니다. 하나의 mongo db는 대략 수백 ~ 만 정도의 TPS에 들쑥날쑥하고 평균적으로는 1000 ~ 2000 정도 나오는 것 같습니다.
첨부한 파일에서 보는 것 처럼 TPS가 0인 구간이 계속 유지되는 것을 볼 수 있습니다. 그리고 그때 서버의 로그를 보면 다음과 같은 메세지가 지속적으로 나타납니다.
"[conn11] waiting till out of critical section"
이것은 청크를 샤딩된 다른 서버로 보내거나 샤딩 정보를 수정할때 락이 발생하고 이것 때문에 트랜젝션을 못받아 주는 것으로 생각됩니다. 꾸준히 일정 수준이상의 insert 트래픽이 지속적으로 전송되는 서비스에 사용하기 위해서는 별도의 튜닝 작업이 필요할 것으로 생각됩니다.
tps의 시간대별 변화를 나타내면 다음 그림과 같습니다.

tps가 0인 구간이 지속되는 부분이 있습니다. 이 구간에서는 클라이언트의 요청을 거의 처리 못하고 있는 구간이라고 볼 수 있습니다.
Posted by 김형준
- Response
- No Trackback , 2 Comments
Trackback URL : http://www.jaso.co.kr/trackback/416
Comments List
-
좋은 내용 감사합니다. 그런데 이 테스트 이후에 튜닝등에 대한 작업이 진행되셨나요? 위 내용으로만 보면 mongodb의 성능은 무시할 수 없을 만큼 불안정하다고 보여지네요.
-
성능 튜닝은 하지 않았습니다. 저희는 shard 구성이 아닌 단순히 replica-pair로 사용하고 있습니다. 그리고 테스트 시기도 한참되었기 때문에 현재 버전으로 다시 테스트 해보고 사용하시는 것이 좋겠습니다.
-
tps.txt





