是什么让MongoDB肆虐?

时间:2014-04-25 01:26:14

标签: mongodb mongoose

我有几个节点服务正在运行,每个服务都使用一个Mongoose驱动程序。我有Nagios警告设置每秒太多查询,这些已经开始触发。什么是追踪哪些服务爆破所有查询的最佳方法?

2 个答案:

答案 0 :(得分:1)

首先,您可以使用profiling

db.setProfilingLevel(level, slowms)

这将写入超过“slowms”的查询到system.profile集合 注意分析本身会降低系统速度。所以尽量不要在高峰时段这样做。并且要小心slowms参数,这样就不会记录太多的查询。

其次,看一下你的日志:

tail -f /var/log/mongodb.log

它会录制慢查询。

编辑:如果您正在寻找哪个客户端发送大多数查询,请尝试mongotop,这将为您提供每个集合的读/写概述。或mongostate,它将为您提供每个数据库概述。这不是那么直接,但它可以帮助您分析压力。或者您可以使用Linux工具iftop查看网络流量。

答案 1 :(得分:1)

发生这种情况时我会登录mongo shell并运行db.currentOp(true):

http://docs.mongodb.org/manual/reference/method/db.currentOp/

不知道您的具体设置,但如果您有多个客户端访问数据库,则结果中的currentOp.client字段对于跟踪恶意查询的来源非常有用。