我在arangodb中尝试同时执行两个查询时遇到连接重置错误?

zlhcx6iw  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(151)

我正在使用X1 M0 N1 X和X1 M1 N1 X。我还有X1 M2 N1 X Express应用程序,它是为了服务客户端请求而设计的。
执行并发请求时遇到问题。并发处理客户端请求时数据库连接挂起:
当应用程序收到请求时会执行什么操作?
打开数据库连接-

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

有多个中间件函数需要访问以执行各种功能和可访问性检查。

  • 打开新数据库连接-〉
  • 执行操作-〉
  • 关闭连接-〉
  • 将结果返回给下一个中间件。

一次只发出一个请求的情况下,这个方法可以正常工作。但是如果我试图同时调用两个API,我会得到CONNECTIONRESET错误。并且还会抛出套接字挂起错误。
我试着推荐关闭连接方法,它开始工作了一段时间。但当我增加连接数量时,它再次显示与“连接重置”相同的错误。
我已经搜索了arangojs的文档,但没有找到任何关于连接操作的信息。
任何帮助都将不胜感激。

rjjhvcjd

rjjhvcjd1#

这对您来说可能太晚了,但我也遇到了类似的问题。在与ArangoDB支持人员交谈后,原来是套接字的问题。
查看netstat -aplnt的输出时,我看到了大量的CLOSE_WAITTIME_WAIT消息,表明有大量连接没有正确关闭。
解决方案是启用持久连接(请参阅arangojs config中的keep-alive和maxSockets),然后尽可能重用单个连接。这不仅仅是一个设置更改,还需要一些代码修改。

相关问题