我们有两组数据库和应用服务器在 Rackspace VPS 上运行。生产和准备阶段。应用程序在 Rails 上,数据库是 MongoDB。
虽然暂存(与生产文档一样多,55k)运行良好,但生产服务器却非常慢。速度慢了 20 倍或更多。即使是简单的查询也要花费近 18 秒!
这是我目前所做的,但我仍然无法弄清楚。
- 重新启动 Mongo 服务。
- 检查了应用程序和数据库服务器之间的 ping 时间,看看是否是网络问题。结果不是。
- 在模型上明确运行 create_indexes 但无济于事。
- 启用了 mongo 分析选项,但它没有给我提供除我已有信息以外的额外信息。
这是运行某些数据库调用时的 mongostat 生产快照:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
0 0 0 0 0 1 0 1.95g 4.55g 122m 76 0 0 0|0 1|0 62b 1k 2 09:07:25
0 0 0 0 0 1 0 1.95g 4.55g 119m 121 0 0 0|0 1|0 62b 1k 2 09:07:26
0 0 0 0 0 1 0 1.95g 4.55g 120m 80 0 0 0|0 1|0 62b 1k 2 09:07:27
0 0 0 0 0 1 0 1.95g 4.55g 118m 116 0 0 0|0 1|0 62b 1k 2 09:07:28
为什么有这么多故障?这是正常的吗?任何帮助/见解都将不胜感激。
答案1
原来,罪魁祸首是别的东西。Ubuntu 的错误报告包 Whoopsie。以下是它的追踪方法。
- Mongostat 显示出异常多的故障,这意味着数据在 RAM 中不可用,并且 mongo 可能在每次查询时都会访问磁盘。
- 然后我发布了 Linux自由的命令。它没有帮助。它在报告可用 RAM 时实际上会误导。请看这里 www.linuxatemyram.com
- 顶部命令也没有起到什么作用,它总是显示内存使用率最高的是 mongo,最高不超过 20%。那么为什么 mongo 不使用剩余的内存呢?!
- 在谷歌上快速搜索系统/内存监控工具显示顶部作为最喜欢的。
这是顶部服务器上的输出。 https://i.stack.imgur.com/2CLnI.png- 图像
高达 43.7% 的内存被 whoopsie 占用!真是糟糕透了。事实证明,它影响了生产和暂存服务器,但暂存服务器仍然在一定程度上幸存了下来。后来我又在谷歌上搜索了几次,发现这确实是 Ubuntu 上的一个错误。 https://bugs.launchpad.net/bugs/998521
我不认为 whoopsie(Ubuntu 崩溃数据库提交守护程序)在我的服务器上是必需的关键组件。我继续apt-get 已删除这清除来自所有服务器的软件包。