2017-07-15 34 views
-1

我开发了一个java web应用程序(当某个按钮被按下时)将数据读入一个mongodb数据库,并且(当另一个特定按钮被按下时)从数据库读取数据。mongodb拒绝接受进一步的连接,因为连接太多

然而,现在数据库拒绝接受进一步的连接,因为有太多的连接:

enter image description here

当我去到MongoDB的壳,然后键入命令

db.currentOp() 

我被告知数据库实例只有一个正在进行的操作:

enter image description here

然而,当我运行命令

db.currentOp(true) 

还包括空闲连接和系统操作的操作,我得到操作的一个长长的清单。 ......下面是一个简短摘录:

enter image description here

什么是所有这些连接在做什么?他们为什么以及如何创建的?我可以全部删除它们吗? (我该怎么做?)

+0

你在运行MongoDB的操作系统是什么? Webapp和'mongod'运行在同一台机器上吗? –

+0

我们能不能确定你的上一个问题[“在web应用程序中只创建一个到数据库的连接”](https://stackoverflow.com/questions/45118989/creating-only-one-connection-to-the-数据库在Web应用程序)你实际上是错误地创建“bucketloads”更多的客户端连接实例比你实际需要。实际上,当你这样做时,会发生这种情况。 –

回答

0

您可能正在保存客户端的数据。 您必须将数据发送到Web应用程序并从那里将数据保存在MongoDB中。

或者

你可能不打开它们后关闭在Web应用程序的连接。否则,您必须关闭连接,否则可能导致内存泄漏。

要删除连接,您只需重新启动MongoDb服务。

+0

谢谢你的回答....起初我打开它后确实没有关闭数据库连接,但是我改变了它。现在,在对数据库执行每次读或写操作之后,我关闭了我创建的数据库实例。我尝试使用control-c来终止连接...这会停止数据库,但是当我重新启动它时,连接数再次过高,数据库无法接受连接。 ......我不确定你的意思是“你可能会保存客户端的数据。” (为什么会出现问题?)...实际上,这些数据来自网络服务 –

+0

您没有提及任何代码。所以我认为你错误地在客户端写了保存代码。而且,由于您正在本地进行测试,因此未显示任何错误。 –

+0

好吧,我明白...为什么重新启动mongoldb服务器不杀死连接? –