0

我正在使用arangojs v6.14.1arangodb version 3.6.4.。我也有nodejs用于服务客户请求的快速应用程序。

我在执行并发请求时遇到问题。我同时处理客户端请求时的数据库连接挂断:

应用收到请求后会做什么?

打开数据库连接 -

db = new Database(dbConfig.url); 
db.useDatabase(dbConfig.name); 
db.useBasicAuth(dbConfig.username, dbConfig.password);

有多个中间件功能需要访问以执行各种功能和可访问性检查。对于我尝试的每个中间件

  • 打开一个新的数据库连接->
  • 执行动作 ->
  • 关闭连接->
  • 将结果返回到下一个中​​间件。

这适用于一次单个请求。但是如果我尝试同时调用两个 API,我会收到 CONNECTIONRESET 错误。并且还会抛出套接字挂断错误。

我试图推荐关闭连接方法,它开始正常工作了一段时间。但是当我增加连接数时,它再次显示与“CONNECTIONRESET”相同的错误。

我已经搜索了arangojs有关连接操作的文档。但我还没有找到任何有关相同的信息。

任何帮助将不胜感激。

4

1 回答 1

0

这对您来说可能为时已晚,但我遇到了类似的问题。在与 ArangoDB 支持人员交谈后,结果证明是套接字的问题。

查看我的输出,netstat -aplnt我看到了很多消息CLOSE_WAITTIME_WAIT表明有很多连接没有正确关闭。

解决方案是启用持久连接(请参阅arangojs 配置以了解 keep-alive 和 maxSockets),然后尽可能重新使用单个连接。这不仅仅是设置更改,还需要一些代码修改。

于 2021-05-17T18:56:16.957 回答