128mb 32 位 VPS 上的 MongoDB(以及 Tornado 和 Redis)

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 时,我会回复您。欢迎就如何进行压力测试提出建议。我对这类东西很陌生。

答案1

是的,我认为这行不通。我目前正在运行的 mongoDB 使用 560MB VIRT、205MB RES。我不知道这与数据集大小如何对应,但我怀疑你会遇到问题。不过,只有一种方法可以确定——试试看。如果你无法升级你的 VPS(你买不起 360MB 的 Linode,那么你买 128MB 的 VPS 能有多便宜?),那么就试试吧,如果不行,就放弃 MongoDB 并使用其他东西。

答案2

我在 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

我的结论是什么?我不知道,需要将配置与用 mysql 替换的 mongodb 进行比较。也许,足够好了?

答案3

您知道 mongodb 使用 mmap 并且只会分配它所接触到的所有 RAM......

答案4

假设 128mb 是 32 位,请记住您的数据限制为 1.8gb

相关内容