
# MongoDB数据库迁移过程中，源数据库出现内存溢出（OOM）是什么原因
#### 场景描述
在进行MongoDB数据库迁移的过程中，出现源数据库内存溢出（OOM），导致源数据库不可用，迁移失败。
#### 问题分析
出现上述内存溢出可能存在如下原因：
- 源数据库的mongod服务单独部署在一台机器上，如果这种情况下在迁移过程中出现内存溢出，一般就是因为在迁移过程中源库在执行会大量消耗内存的操作，比如：创建索引，排序查询等。
- 源数据库的mongod服务和其他服务同时部署在一台机器上，而且没有设置cacheSizeGB的大小，这种情况下，如果因为其他服务消耗掉内存导致不能给wiredTiger引擎保证的内存，则会出现内存溢出的情况。
  ![](https://support.huaweicloud.com/drs_faq/public_sys-resources/note_3.0-zh-cn.png)
  一般默认情况下，mongod的wiredTiger引擎可以使用整个机器内存的50%（3.2的版本）或者60%（3.4以后的版本）。
  
 
#### 解决方案
- 如果mongod服务是单独部署在一台机器上，则在迁移过程中最好不要执行会大量消耗内存的操作，比如：创建索引，排序查询等。
- 如果mongod服务和其他服务共同部署在一台机器上，则建议给mongod的wiredTiger引擎加上cacheSizeGB的参数，设置的值为机器最小空闲内存的一半，保证所有服务在高峰期所使用的内存不会超过分配给wiredTiger引擎的内存。
 
