Mongodb突然出现高连接数/队列,数据库停止响应
问题 我们在mongodb设置中遇到一个奇怪的问题。有时我们会遇到高连接和高队列的高峰,如果让队列和连接增加,mongodb进程将停止响应。我们需要使用带有htop的sigkill重新启动实例。 似乎存在系统限制/ mongodb配置阻止mongodb运行,因为硬件资源还可以。此问题的版本单独发生,然后在生产服务器上设置副本。前面的细节。 关于软件环境 这是一个独立的mongodb实例(不是分片或副本集),它在专用计算机上运行,并由其他计算机查询。我正在Debian 7.7下使用mongodb-linux-x86_64-2.6.12。 查询mongo的机器使用的是Django == 1.7.4,Mongoengine = 0.10.1和pymongo == 2.8,nginx 1.6.2和gunicorn 19.1.1。 在Django settings.py文件上,我使用以下几行连接到数据库: from mongoengine import connect connect( MONGO_DB, username = MONGO_USER, password = MONGO_PWD, host = MONGO_HOST, port = MONGO_PORT ) MMS统计 正如您从MMS服务的以下img中可以看到的那样,我们在连接和队列上达到峰值: 发生这种情况时,我们的mongodb进程将完全冻结。我们必须使用SIGKILL重新启动mongodb,这确实很糟糕。 在图像中有3个冻结事件。 如img所示,当发生这种情况时,我们在非映射虚拟内存上也会出现一个峰值。 另外,我们在第二和第三次冻结附近的Btree图表上发现了增加。 我们已经检查了日志,但是没有可疑的查询,操作人员也没有猛增,似乎没有比平常更多的查询了。 这是关于同一错误但在另一天/时间的另一个屏幕截图: 在所有情况下,数据库上的锁都没有显着增加,它有一个峰值,但没有达到4%: OpCounter降为零,似乎每个操作都进入mongodb queque,因此数据库创建新连接以尝试执行新请求,所有连接也都进入队列。 机器资源 关于硬件,该计算机是具有4个Intel …