访问者数量的增加会导致在 MongoDB 上发出的命令数量增加。这使得数据库变慢并且整个系统无法使用。Mongostat 在那些高峰时期看起来像这样:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
0 266 0 0 3 19 0 58.7g 119g 13g 2 0 0 0|0 0|0 47k 1m 167 14:24:30
0 308 4 0 0 8 0 58.7g 119g 13g 5 0.7 0 0|0 0|0 54k 880k 167 14:24:31
0 177 3 0 0 34 0 58.7g 119g 13g 0 0.5 0 0|0 0|0 49k 559k 173 14:24:32
0 73 2 0 0 8 0 58.7g 119g 13g 0 0.3 0 0|0 0|0 21k 288k 174 14:24:33
0 201 5 0 0 27 0 58.7g 119g 13g 2 0.5 0 0|0 1|0 51k 639k 167 14:24:34
0 232 4 0 0 9 0 58.7g 119g 13g 1 0.3 0 0|0 0|0 44k 456k 167 14:24:35
0 102 2 0 0 109 0 58.7g 119g 13.1g 0 0.3 0 0|0 0|0 33k 269k 193 14:24:36
0 265 3 0 0 103 0 58.7g 119g 13.1g 0 0.5 0 0|0 0|0 76k 714k 178 14:24:37
1 277 4 0 0 16 0 58.7g 119g 13.1g 2 0.5 0 0|0 0|0 71k 501k 180 14:24:38
0 237 3 0 0 92 0 58.7g 119g 13.1g 0 0.4 0 0|0 0|0 54k 670k 201 14:24:39
问题是:我在我的代码中找不到这些命令的来源。我尝试打开完整的分析(记录所有查询),但找不到任何这些命令。我看到一些,但每秒只有几个,通常的东西。有时几分钟内每秒有 100-200 个命令,但我在日志和分析器中看到的只是身份验证命令(这是 php 脚本在超时后重新连接)。
如何调试此问题并找到太多命令的来源?