我有一个庞大的数据集,以及足够的 RAM 来存储我的大部分数据(我有一些独特的访问模式)。我想看看我的数据库性能是否正在下降,因为我的工作集对于我的硬件来说太大了。
我该怎么做呢?我可以使用哪些 Linux 工具。我目前在 Ubuntu 11.04 上使用 Mongo 2.2。我应该关注哪些指标?
更新:我想问这个问题的更好方法是“有经验的 mongo 管理员使用什么工具来监控性能?”
我有一个庞大的数据集,以及足够的 RAM 来存储我的大部分数据(我有一些独特的访问模式)。我想看看我的数据库性能是否正在下降,因为我的工作集对于我的硬件来说太大了。
我该怎么做呢?我可以使用哪些 Linux 工具。我目前在 Ubuntu 11.04 上使用 Mongo 2.2。我应该关注哪些指标?
更新:我想问这个问题的更好方法是“有经验的 mongo 管理员使用什么工具来监控性能?”
就性能而言, Mongostat应该为您提供您正在寻找的大部分信息。要查看的关键指标是索引未命中、页面错误、锁定百分比以及读取器和写入器的队列长度。如果这些数字很高(理想情况下高于零,如果它们变化不大),那么你就有问题了。
就工具而言,MMS 足以开始,但就我个人而言,我发现自己每次不得不研究性能时都会求助于 mongostat。此外,根据配置文件级别查看日志,您应该在那里看到缓慢的查询,这应该让您了解要优化哪些查询(或操作)。
我在这里找到了一些监控命令。这可能是你要找的吗?至于您用来跟踪问题的工具,这就是我的做法。
Nagios:我使用 nagios 作为集中监控系统来检查每个服务器的健康状况。如果出现问题,它会提醒我。例如,我为 API 的响应时间超出阈值等情况设置了警报。
Monit:如果某些事情变得完全疯狂,monit 会处理它。假设我的堆栈中的任何组件出现故障。它提醒我,也为我提出来。
Logstash:我的日志中记录的任何可疑活动,它都会让我知道。
SeaLion:现在以上所有内容都让我知道我的堆栈是否有问题。但是是什么导致了这个问题,我用 SeaLion 调试。我记录系统分析工具的输出,如 sar、top、uptime、iostat、vmstat、netstat 等。除了这些命令之外,您还可以在 SeaLion 上设置您需要的命令,它会执行所有这些命令并以漂亮的时间线格式显示. 安装和设置也非常容易。
iostat 将告诉您磁盘子系统如何处理负载。我喜欢iostat -x -k 1
时间序列视图。