问题描述
在一处业务场景中使用过程中,需要往mongoDB大量的放入数据,然后从测试程序开始,不到10分钟,出现大量报错,查看日志发现,是mongoDB数据连接不上,查看所在机器,发现该机器上的mongoDB实例已经挂掉。
解决
- 查看系统日志: /var/logs/message。
- 确定是应为内存占有太高,让操作系统把mongoDB实例给干掉了
- 查看上面的类似top的内容,发现mongoDB实质上使用的内存只有1.5GB,而机器物理内存高达16G。查看剩余内存,发现,因为是测试机器,上面有mysql,redis,tomcat等的程序都在运行,剩余内存其实也就1.5GB左右。
- 我们使用的mongoDB版本为3.2.9 版本,查找了一下 mongodb.com: 3.2: memory-use。
- By default, the in-memory storage engine uses 50% of physical RAM minus 1 GB. (即默认内存为机器内存的50%-1GB)
- 可以通过 --inMemorySizeGB: 这个命令设置