MongoDB를 사용하여 주기적으로 측정 한 값을 저장합니다. ~ 100ms마다 많은 값이 문서로 삽입됩니다. 잘 작동하지만 성능 문제가 걱정됩니다. (안전한 삽입을 사용합니다. PyMongo에서는 이것이 기본값 인 것 같습니다.)
mongod가 하드 디스크에 저장할 수있는 것보다 초당 삽입 수가 더 많으면 어떻게됩니까? 경고가 있습니까? 아니면 단순히 자동으로 실패합니까?
쓰기로드를 모니터링하는 방법이 있습니까? db.serverStatus().writeBacksQueued
전화 할 때 항상 false로 설정된 것을 찾았 습니다. 쓰기 대기열을 채우기 위해 얼마나 많은 데이터를 삽입해야하는지 테스트하려면 어떻게해야합니까?
mongostat
잠금을 표시합니다. 이것이 내가 걱정해야 할 것입니까?
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn repl time
*117 *0 *0 *0 0 2|0 0 17.4g 35.3g 3.76g 0 .:6.5% 0 0|0 0|0 124b 6k 2 SLV 09:58:10
*111 *0 *0 *0 0 2|0 0 17.4g 35.3g 3.76g 0 .:0.8% 0 0|0 0|0 124b 6k 2 SLV 09:58:11
*111 *0 *0 *0 0 2|0 0 17.4g 35.3g 3.76g 0 .:4.2% 0 0|0 0|0 124b 6k 2 SLV 09:58:1
쓰기 잠금에 대해 걱정해야합니까? 쓰기 잠금 기간 동안 삽입물은 어떻게됩니까? 나중에 큐에 저장되고 저장됩니까?
하나의 마스터와 하나의 슬레이브를 사용하는 간단한 복제 설정에 대해 생각하고 있습니다. 초기 동기화 또는 재 동기화 프로세스가 데이터베이스를 잠그나요?
(버전 2.4.3을 사용하고 있습니다.)
업데이트 : 내 자신의 질문에 부분적으로 대답했다고 생각합니다. 작은 테스트 문서를 삽입하는 간단한 while 루프를 사용하여 초당 최대 12.000 개의 삽입물을 얻을 수있었습니다. 그러나 qr | qw는 여전히 읽기 및 쓰기 큐가 여전히 비어 있음을 보여줍니다.
insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn repl time
11234 *0 2 *0 1563 1|0 1 21.9g 44.3g 1.22g 0 testdb:58.9% 0 1|0 1|1 797k 980k 6 PRI 10:26:32
12768 *0 2 *0 1284 1|0 0 21.9g 44.3g 1.22g 0 testdb:58.0% 0 0|0 0|1 881k 1m 6 PRI 10:26:33
12839 *0 2 *0 1231 1|0 0 21.9g 44.3g 1.22g 0 testdb:60.3% 0 0|0 0|1 883k 1m 6 PRI 10:26:34
12701 *0 2 *0 910 1|0 0 21.9g 44.3g 1.22g 0 testdb:61.8% 0 0|0 0|1 858k 1m 6 PRI 10:26:35
12241 *0 2 *0 1206 1|0 0 21.9g 44.3g 1.22g 0 testdb:56.7% 0 0|0 0|0 843k 1m 6 PRI 10:26:36
11581 *0 2 *0 1406 1|0 0 21.9g 44.3g 1.22g 0 testdb:61.8% 0 0|0 0|1 811k 1m 6 PRI 10:26:37
8719 *0 2 *0 1210 1|0 0 21.9g 44.3g 1.22g 0 testdb:43.8% 0 0|0 0|1 618k 762k 6 PRI 10:26:38
11429 *0 2 *0 1469 1|0 0 21.9g 44.3g 1.22g 0 testdb:60.6% 0 0|0 0|1 804k 993k 6 PRI 10:26:39
12779 *0 2 *0 1092 1|0 0 21.9g 44.3g 1.22g 0 testdb:60.2% 0 1|0 0|1 872k 1m 6 PRI 10:26:40
12757 *0 2 *0 436 1|0 0 21.9g 44.3g 1.22g 0 testdb:59.7% 0 0|0 0|1 838k 432k 6 PRI 10:26:41
이것은 인서트만으로도 많은 문제를 일으키지 않을 것이라고 생각합니다. "대량의 제거와 같은 다른 쓰기 작업과 함께 많은 쓰기 작업을 수행하면 큐가 급증하는 경향이 있습니다." ( 여기 에서 찾았 습니다 )
필자가 제기 한 질문 : 쓰기 큐가 장기간 증가하면 데이터는 어떻게됩니까?