我有几个节点服务正在运行,每个服务都使用一个Mongoose驱动程序。我有Nagios警告设置每秒太多查询,这些已经开始触发。什么是追踪哪些服务爆破所有查询的最佳方法?
答案 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字段对于跟踪恶意查询的来源非常有用。