在进行MongoDB大数据量写入的情况下,Mongo同步出现过很多问题。简单记录一下:
同步数据过慢:可参考https://yq.aliyun.com/articles/47336
同步数据异常导致占用连接池资源:
sharded connection to xxx not being returned to the pool
SHARDING [conn32380] could not autosplit collection omm_spc.vcm_lpr_info5 :: caused by :: 9996 stale config in runCommand xxx
写入数据时应用暂停且无法写入数据。怀疑是Mongos未释放连接池资源。重启mongos解决。
占用过多内存:
MongoDB最好独立部署,因为MongoDB默认会使用系统所有剩余内存,且无法管理MongoDB占用多大内存,一种方法可以通过cgroup限制用户进程内存。我们的环境上是通过限制wiredTigerCache大小,从而一定程度上减少Mongo缓存使用,但是这样做会导致频繁fsync从而影响写入速度,因为fsync会阻塞所有写入操作。如和JVM应用一起部署,可能会出现和JVM堆内存抢占内存的问题从而导致OOM。