MongoDB性能监控与优化指南
1. 内存监控基础
1.1 内存类型
内存主要分为虚拟内存、映射内存和常驻内存。当数据完全能存入内存时,常驻内存大小应近似于数据大小,这里的“内存”指的是RAM。随着数据集增长,虚拟内存和映射内存会相应增加,常驻内存会增长到可用RAM大小后保持稳定。
1.2 页面错误跟踪
页面错误统计能反映MongoDB查找的数据不在RAM中的频率。通过观察页面错误数量随时间的变化图(如图21 - 2和图21 - 3),可了解系统状况。若磁盘能处理大量错误且应用能承受磁盘查找延迟,高页面错误数不一定有问题;但如果应用无法承受从磁盘读取数据的延迟增加,就需将所有数据存入内存或使用SSD。
磁盘过载时页面错误会成问题,磁盘负载能力并非线性,过载后操作排队时间会变长,导致性能迅速下降。因此,应跟踪页面错误数量,确定系统能承受的页面错误基线,当错误数上升且性能变差时发出警报。
可通过以下命令查看每个数据库的页面错误统计:
> db.adminCommand({"serverStatus" : 1})["recordStats"]
{
"accessesNotInMemory": 200632,
"test": {
"accessesNotInMemory": 1,
"pageFaultExceptionsThrown": 0
},
"pageFaultExceptionsThrown": 6633,
"admin": {
"accessesN