我应该禁用closures生产机器中的MongoDB分析器?

根据[1]的默认值是在执行时间> 100ms时收集configuration文件数据

但其中一个问题是,当大多数查询的执行时间大于100ms时,系统开始超载,而我不确定分析器是否会使我们的系统更加繁忙。

我想要禁用或设置一个大的值,例如2秒。 似乎默认的100ms太小了?

[1] http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/

首先,分析器默认是closures的。 缓慢的查询(默认情况下,任何超过100毫秒的查询)都将被logging到MongoDB日志中,但与分析器不同,并且不会占用大量资源(实质上只是写入一行文本到DB外的文件,不locking等)。 通常情况下,保持这种状态是安全的,发现慢速查询的好处通常远远大于具有较大日志文件的缺点。

其次,当分析器被启用时,它将收集的所有数据写入system.profile集合。 在默认级别为0时,它被禁用,在第1级时,它将根据相同的限制logging所有“慢”操作,而在第2级,它将logging所有操作,不pipe速度如何。

正如你所想象的那样,将它设置为2是非常耗费资源的 – 你的写入量会增加一倍,并为每次读取增加一个写入。 根据你的工作量,1的水平也可以是密集的。 一般来说,我只会在受控的情况下(维护窗口,debugging,开发/ QA环境)推荐分析器。

尽pipe您可以考虑将慢速操作logging的两种方法完全分开,但是当前slowms值会影响两种方法,即慢速查询。

因此,如果设置的值较高(2秒),则会减less写入日志的操作量。 这样做的缺点是你会错过所有正在进行的操作,通常被认为是现代数据库中的永恒。 100ms的价值通常是一个体面的起步者,我甚至看到人们根据他们在超时方面的应用要求来降低它,但是增加价值是很值得的。

分析器从mongodb获取资源! 它必须计时查询并将其写入到mongodb.log中。

如果你根本不需要,你可以安全地禁用它。