远程MongoDB服务器还是本地的?

我在1GB的Linode(VPS)和MongoDB + Apache。

MongoDB有150万条logging。 脚本的多个实例,服务完全依赖该脚本,导致每秒50个活动连接和大约50个查询。

我的free -m输出

  total used free shared buffers cached Mem: 995 974 21 0 4 823 -/+ buffers/cache: 145 849 Swap: 511 79 432 

现在,每个实例(已经优化)的脚本需要约17MB,正如我所说的,它运行的多个实例。 免费caching内存(849 MB!)和实际可用内存(21 MB)有很大差异。 我不能运行PHP脚本的实例,我得到一个内存分配失败的错误。

大部分内存被MongoDB使用,并且还导致CPU占用250+ %高达250+ % 。 这是没用的,我甚至可以在849 MB内运行我的PHP脚本的很多实例。 我想知道,如果我能远程托pipe我的MongoDB(我更喜欢MongoHQ)会更好。 他们有一个15美元/月的计划,这对我来说是公平的。 我可以降级到768 MB的linode,这将是没有MonogDB运行就足够了。

但是,使用远程托pipe数据库有什么好处呢? 每秒50多个连接和50个查询? 接下来会有带宽问题。

任何帮助是极大的赞赏。

如果要远程运行数据库,请在与应用程序服务器相同的网段运行它,或者至less使用同一个数据中心。

即使您获得的低(ish)延迟<10 ms,可能会影响您的查询,具体取决于您所拥有的数据加载types。
另外,如果您的系统出现另一个故障点,则您的应用程序服务器和数据库服务器之间的通信可能会失败。 MongoDB不会对它的协议使用任何encryption,并且你的数据将会在神知道有多less跳之间运行,除非你以某种方式隧道。 而且,正如您所指出的那样,有带宽使用。 总的来说,我build议你得到另一个节点来运行你的数据库,但在你的应用程序服务器的相同位置。