ede*_*ill 6 performance-tuning mongodb
在运行 mongostat 查看我们的 mongo 数据库时,我会经常看到锁定的 % 数字跳起来,有时高达 80%。下面是一些示例行:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
0 10 7 0 0 17 0 2.27g 5g 1.63g 0 0.1 0 0|0 0|0 22k 7k 83 15:46:10
0 21 7 1 0 23 0 2.27g 5g 1.73g 0 0.1 0 0|0 0|1 11k 424k 83 15:46:11
0 28 10 3 0 28 0 2.27g 5g 1.73g 0 26.9 0 0|0 0|0 33k 196k 83 15:46:12
0 17 6 3 0 13 0 2.27g 5g 1.72g 0 18.2 0 0|0 0|0 11k 10k 83 15:46:13
0 18 5 1 0 11 0 2.27g 5g 1.73g 0 0.1 0 0|0 0|0 23k 362k 83 15:46:14
Run Code Online (Sandbox Code Playgroud)
mongostat 的帮助说它是
锁定 - 全局写锁的时间百分比
我的理解是写锁定整个数据库。如果我在同一个 mongo 服务器(A 和 B)上有两个数据库,那么写在 A 块上会写在 B 上吗?一个数据库上一半的时间是否意味着它会显示 25%(就像在双核机器上使用一半的内核一样),还是会显示 50%?
小智 5
是的,MongoDB 使用全局写锁(服务器范围),因此 mongostat 报告的“lock %”表示服务器在最后一个采样周期(一秒)内在全局写锁中花费的总时间——对于所有操作在所有数据库上。
随着您执行更多的写入操作,例如更新、插入、删除和评估,该值将会增加。
对于独立服务器,上面示例中的数字并不令人担忧。
但是,80% 的常规读数表明您可能希望在更多服务器之间平衡读取和写入,或者将您的集合分片,尽管我希望在性能问题之前先进行分片以缓解存储问题。
一般来说,优化的关键包括正确和全面的索引、限制结果、使用分析器和解释()来发现瓶颈,并确保正确使用驱动程序(试验光标批量大小可以产生显着的改进)。
归档时间: |
|
查看次数: |
4472 次 |
最近记录: |