磁盘使用率高问题排查方式与解决方法:
- 使用【监控图表】的【磁盘】标签进行查看磁盘的使用情况。
- 解决方案:
- 对于集群实例,可能是因为选择和设置的分片不合理导致数据分布不均衡,从而引起磁盘空间使用率高的情况。此时,可以对数据库集合进行合适的分片,具体操作请参见设置数据分片以充分利用分片性能。
- 随着业务数据的增加,原来申请的数据库磁盘容量不足。此时建议扩容磁盘空间,确保磁盘空间足够。
- 如果原有实例规格的磁盘已是最大的,请先升级规格。
- 存在大量过期的数据文件占用磁盘空间,此时需要及时处理过期数据文件。例如:如果整个库不需要了,则可以执行dropDatabase命令进行删除,从而快速释放磁盘空间。
- 后台数据处理机制原因:因为无论是写入、更新或删除等操作(包括索引插入和删除等操作),在后台实际上都会转成写入。因为底层的存储引擎(WiredTiger),采用是appendOnly机制。只有当存储引擎内部数据状态满足一定条件后,会触发内部的compaction操作,进行数据压缩,进而释放磁盘空间。所以有时候会发现,磁盘占用量比实际数据量大,实际上这只是“看起来大”,并不会影响用户的使用。因为内部有些数据压缩,是延时操作,没有立即执行。随着数据的继续写入,会触发后台执行数据压缩清理空间。