從我的測試中,我得到了每秒500次插入,200次查詢,400次更新。我想知道我可以調整以增加這些數字。如何加快我的mongodb測試?
我讀過其他人可以在他們的測試中實現數千乃至數萬個插入,這比我的測試要好得多。我不知道我是否缺少一些基本的東西?
所以,這裏的事實:
- 我使用默認配置的贏得32位的MongoDB V2.0.3
- Java驅動程序(2.7.3)帶彈簧蒙戈,(我不力fsync)
- 做插入和原子更新的組合,如推,拉, inc,dec,設置,
- 並重復所有這些爲500k次。
- 其目的是模擬用戶操作,如插入和更新
- 沒有定義特定的索引,但我認爲默認情況下總是會有唯一的索引ID?
- 它運行在Eclipse IDE中的Java應用程序是在同一機器上運行作爲mongod的服務器
- H/W規格:核i5,MEM 4GB,ThinkPad的邊緣
- 我注意到的java程序需要大約280MB和是在循環的過程中,這個數字穩定
的開始時間是:2012-03-08 21:50:16
而且我監視使用mongostat,並達到22:05:10
的時間後,我結束我的未完成的應用程序..這是最後一個輸出o F中的mongostat
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
499 200 400 0 0 100 0 1023m 1.06g 581m 145 8.5 0 0|0 0|0 645k 97k 3 22:05:01
503 201 403 0 0 102 0 1023m 1.06g 582m 154 10.7 0 0|0 0|1 651k 98k 3 22:05:02
520 208 415 0 0 105 0 1023m 1.06g 582m 176 11.1 0 0|0 0|0 671k 101k 3 22:05:03
504 202 403 0 0 102 0 1023m 1.06g 582m 167 7.2 0 0|0 0|0 651k 98k 3 22:05:04
524 209 419 0 0 106 0 1023m 1.06g 582m 147 8.3 0 0|0 0|0 675k 102k 3 22:05:05
534 213 428 0 0 107 0 1023m 1.06g 583m 176 7.4 0 0|0 0|0 690k 103k 3 22:05:06
531 213 424 0 0 108 0 1023m 1.06g 584m 160 4.9 0 0|0 0|0 685k 104k 3 22:05:07
533 213 427 0 0 107 0 1023m 1.06g 584m 164 6.9 0 0|0 0|0 689k 103k 3 22:05:08
518 208 414 0 0 105 0 1023m 1.06g 585m 158 7.3 0 0|0 0|0 669k 101k 3 22:05:09
521 208 417 0 0 105 0 1023m 1.06g 585m 154 4.7 0 0|0 0|0 673k 101k 3 22:05:10
然後我檢查我的插入數:
> db.myCollection.find().size();
90575
這是插入我的文檔的一個例子,它也被更新等的過程中
> db.myCollection.findOne().pretty();
{
"_id" : "b146189a-56a4-4035-8245-c4bd6dc2bd22",
"something1" : "my class is cool !",
"something2" : {
"value" : "this is a statement blah blah",
"name" : "myStatement"
},
"something3" : {
"size" : {
"value" : 0,
"name" : "size"
},
"value" : [
"6810cb0c-fa3e-4ca9-8a27-8432f2d1e828",
"a8276d05-a796-4c43-bc74-edc06d074099"
],
"name" : "myids"
},
"something4" : {
"myattr" : {
"value" : "something",
"name" : "name"
},
"attr" : {
"content" : {
"value" : "another another body body content content",
"name" : "content"
},
"contentId" : "b146189a-56a4-4035-8245-c4bd6dc2bd22",
"name" : "something"
},
"subsubchildchild" : {
"size" : {
"value" : 0,
"name" : "size"
},
"value" : [ ],
"name" : "subBodies"
},
"myId" : "b146189a-56a4-4035-8245-c4bd6dc2bd22",
"name" : "hiccups"
},
"something5" : {
"value" : false,
"name" : "hahaha"
},
"something6" : {
"name" : "okay this is just a test"
},
"something7" : {
"value" : false,
"name" : "remove me !"
},
"something8" : {
"size" : {
"value" : 0,
"name" : "size"
},
"value" : [ ],
"name" : "guess what"
},
"something9" : {
"size" : {
"value" : 0,
"name" : "anotherSize"
},
"value" : [ ],
"name" : "tarantula"
},
"something10" : {
"value" : 8,
"name" : "my exam score"
},
"something11" : {
"size" : {
"value" : 0,
"name" : "justAnotherSize"
},
"value" : [ ],
"name" : "myReference"
},
"something12" : {
"size" : {
"value" : 0,
"name" : "size"
},
"value" : [ ],
"name" : "myOtherReference"
},
"something13" : {
"value" : "8b78fff0-50f5-4992-9972-89f9d944fee7",
"name" : "user"
},
"something14" : {
"dateTime" : "2012-03-08 21:50:17.480000000"
},
"something15" : {
"value" : false,
"name" : "lovely"
}
}
這裏是我的db stat:
> db.stats();
{
"db" : "qa",
"collections" : 7,
"objects" : 815197,
"avgObjSize" : 622.2093211824872,
"dataSize" : 507223172,
"storageSize" : 610770944,
"numExtents" : 57,
"indexes" : 5,
"indexSize" : 64197952,
"fileSize" : 1056702464,
"nsSizeMB" : 16,
"ok" : 1
}
另一個來自好奇心的問題。從我的主集合大小(大約有90k條記錄)和其他非實質集合(它們的大小應該很大)來看,在這種情況下,有大約1TB的fileSize是合理的嗎?有什麼我可以做的,以幫助減少我的文件大小?
請分享您的想法。
我投票結束,因爲這似乎並不是一個具體問題。文件大小的問題確實有一些優點,我建議分解成一個單獨的問題。 – 2012-03-08 15:57:06
@Sean Reilly:對不起,我的壞習慣提供了太多的信息,而且我的問題缺乏清晰度,但是您會介意檢查一下我的更改嗎?與其他許多類似的問題相比,現在問題更加明確了。 – bertie 2012-03-08 16:06:45
我認爲它實際上是一個相對明確的問題,如果有點詳細的話;) – 2012-03-08 16:27:03