128mb 32 位 VPS 上的 MongoDB(加上 Tornado 和 Redis)
我很好奇 mongodb 在有限的 vps 中的表現如何。具體來說,我將在具有 128Mb 記憶體的 32 位 ubuntu 9.04 伺服器上部署此配置(更新:現在我也在考慮 360mb)。
- nginx和redis
- 三個龍捲風應用程序實例(一個用於移動網站;有限的應用程序,不是我的主要受眾);有大約 8 個集合。我的社區的社交網路應用程序。
- mongodb
mongodb 旁邊的所有內容似乎都佔用空間很小。記憶體映射方面,我不知道 mongodb 會如何表現。
我知道在小型 vps 上使用這種配置有點牽強,但這是我現在能負擔得起的。我希望有.. 嗯.. 也許〜50 15rps。我做了很多前端優化的作業,yslow 說 A 91 級(規則集 V2):-)
有人願意分享經驗嗎?例如。mongo 達到上限時的數據集大小,mongo 執行大量磁碟 IO 時的性能等等。謝謝。
更新:這是我的寵物項目。當我有下一次空閒時間在具有精確規格的 vbox 中執行相同的 httperf 時,我會回复您。歡迎提出如何進行壓力測試的建議。我是這種東西的新手。
我在 VirtualBox vm 中執行 ~ 以上配置(+supervisor +errorlogger script -redis)。我載入了 5000 個文件,導致數據大小約為 60Mb (db.mycollection.totalSize())。
在這個測試中,/articles 執行了兩個分頁查詢和 15 個查詢來獲取關係文件。
$httperf --hog --num-conn 1000 --timeout 5 --server peduli.vps --uri /articles # 360Mb box Connection rate: 7.6 conn/s (131.4 ms/conn, <=1 concurrent connections) Connection time [ms]: min 118.7 avg 131.4 max 300.0 median 128.5 stddev 12.2 Reply rate [replies/s]: min 6.8 avg 7.6 max 8.0 stddev 0.3 (26 samples) Reply time [ms]: response 128.8 transfer 2.2 # 128Mb box Reply rate [replies/s]: min 4.2 avg 6.3 max 7.2 stddev 0.7 (31 samples) Reply time [ms]: response 154.5 transfer 4.2 $httperf --hog --num-conn 100 --ra 10 --timeout 5 --server peduli.vps --uri /articles Connection rate: 7.8 conn/s (127.9 ms/conn, <=34 concurrent connections) Connection time [ms]: min 181.4 avg 2267.7 max 4889.5 median 2421.5 stddev 1209.6
這是 128Mb ‘vps’ 盒子內的 ’top’ 快照
Mem: 121528k total, 117532k used, 3996k free, 2732k buffers Swap: 409616k total, 8244k used, 401372k free, 56904k cached
我的結論?我不知道,需要將配置與 mongodb 替換為 mysql 進行比較。也許,足夠好嗎?
是的,我認為這行不通。我目前正在執行的 mongoDB 使用 560MB VIRT、205MB RES。我不知道這如何映射到數據集大小,但我懷疑你會遇到問題。不過,只有一種方法可以確定——試試看。如果您無法升級您的 VPS(您買不起 360MB Linode 的 128MB VPS 有多便宜?),然後嘗試它,如果它不起作用,推出 MongoDB 並使用其他東西。