2012-02-08 5 views
2

mongodb sharding을 하나의 beefier 머신에서 100 개의 샤드로 구현하는 것이 합리적입니다. 데이터베이스에 더 높은 동시 기록을 작성하기 위해서입니다. 각 monogod.exe 프로세스에 글로벌 잠금이 있습니까? 그것이 가능하다면, 그 aproach는 더 높은 쓰기 동시성을 줄 것인가?하나의 머신에서 MongoDB Sharding

+0

파편이 100 개 이상인 경우가 너무 많습니다.하지만 살찌는 서버에서 몇 조각으로 성능을 향상 시키면 놀라지 않을 것입니다. 일반적으로 그러 하듯이, 별도의 덜 까다로운 서버에 샤드를 놓는 것이 어떻습니까? 어떤 종류의 삽입/업데이트 속도를 기대합니까? –

+0

주된 이유는 내가 할 필요가있는 POC에 대한 가용성과 내가 사용할 수있는 서버에 대한 샤드 환경을 시뮬레이트 할 수 있는지 궁금합니다. 나는 8 코어의 서버와 32GB의 RAM을 가진다고 가정합니다.나는 1000 개의 동시 쓰기와 10,000 개의 동시 읽기를 원하며, 각각의 읽기 또는 쓰기 요청은 데이터베이스에 의해 서비스되기 위해 0.5 초 이상 걸리지 않을 것입니다. 이것은 MongoDB와 합리적입니까? 각 읽기의 조회 결과 크기와 기록 할 데이터의 양은 크지 않으며 이는 대부분 db에 대한 많은 동시 읽기 또는 쓰기 요청에 대한 서비스입니다. – iCode

+0

여기 통찰력을 주셔서 감사합니다. 나는 심지어 이해가 되니? – iCode

답변

9

컴퓨터에서 여러 mongod를 실행하는 것은 좋지 않습니다. mongod 프로세스 모두는 사용 가능한 모든 메모리를 사용하려고 시도 할 것이고 다른 mongod의 메모리 매핑 된 페이지는 메모리에서 강제로 제거됩니다. 이것은 대부분의 경우에 엄청난 양의 교환을 창출 할 것입니다. 에서 설명 된 바와 같이

는 글로벌 데이터베이스 잠금은 일반적으로 문제가되지 않습니다 : 오직 컴퓨터 당 하나의 mongod를 사용 http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html

(그러나 그것은뿐만 아니라 mongos 또는 설정 서버를 추가 괜찮)은 몇 가지 간단한 테스트를 위해 않는 한, .

환호, Derick

1

나는 동일한 서버에 여러 mongod를 실행하면 대기 시간 연결에 복제 속도를 증가하는 것이었다 발견 된 경우에만 사용 사례.

Derick이 강조했듯이 쓰기 잠금은 mongodb를 실행할 때 실제로 문제가되지 않습니다. 테스트가 극적으로 성능을 decrase 것이다 (그렇지 않으면 페이지에 너무 많은 데이터를 포함하지 않는 경우 당신이 (충분하기 위해 서버 SEMS 당 4 개 인스턴스) 기계 당 여러 인스턴스와 몽고 스케일링을 증명할 수 :

귀하의 질문에 대답하려면 , 난 이미 그것을 테스트했습니다)

그러나 인스턴스는 여전히 리소스에 대한 경쟁이 될 것입니다. 데이터베이스 잠금 문제를 리소스 잠금 문제로 전환하면됩니다.

2

전적으로 동의하지 않습니다. 우리는 설치시 상자 당 8 개의 파편을 굴립니다. 복제를 위해 두 개의 다른 시스템이있는 두 개의 헤드 노드로 구성됩니다. 총 6 상자. 이것들은 대략 120GB의 RAM, 32 개의 코어 및 2TB의 비싸 박스입니다. 1 상자 당 8 개의 샤드가 있으면 (역사적인 목적으로 8로 설정하는 방식으로 더 높일 수 있음) 우리는 CPU를 효율적으로 활용할 수 있습니다. RAM 자체가 정렬됩니다. 통계를보고 너무 많은 페이징을하지 않고 SSD 드라이브 (우리가 가지고있는)로 디스크 드라이브에 흘려 보내면 너무 나쁘지는 않습니다.

+0

RAM은 어떻게 자체적으로 정렬됩니까? 또한 높은 쓰기 처리량이나 다른 용도로 많은 파편을 사용하기로 결정 했습니까? – iCode

+0

우리는 Mongo Map Reduce (MR)를 사용했으며 모든 데이터를 처리하려면 CPU 성능이 필요합니다. 원래의 샤딩은 코어 당 샤드로 설정되었습니다. 이것은 우리에게 최대 CPU를 주었다. 그 이후 박스는 업그레이드되어 이제 4 코어 당 조각이 나옵니다. 메모리에 관해서는 RAM에서 인덱스를 유지하는 연습입니다. 데이터가 적합하지 않으므로 걱정하지 마십시오. 우리는 RAM을 기준으로 인덱스 크기를 모니터링하고 수용 할 수 있도록 업그레이드했습니다. 우리는 필요하지 않은 색인도 삭제했습니다. –

0

예, 사실 50 억 밀리미터 크기의 쓰기가 많은 데이터베이스에서 그렇게 할 수 있습니다. 몽고드 당 모든 색인이 RAM에 맞는지 확인하고 성장과 유지 관리의 여지가 있는지 확인하십시오.

그러나 대상의 QPS가 무엇인지에 따라 이러한 종류의 공유에는 더 많은 마력이 필요한 반면, 단일 기계의 샤딩은 그렇지 않으며 대부분의 경우 당신은 물품을 버릴 수 있습니다. 싼 하드웨어.

성능 테스트 (ageinst IO, 네트워크, PQS 등)에 대한 일련의 테스트를 수행하고 신중하게 기준을 설정하고 SSD 드라이브를 고려해야하며 편향된 것으로 들릴 수도 있지만 Linux XFS 스토리지도 고려해야 할 사항입니다 .

관련 문제