避免oriento中的查询超时(OrientDB的node.js驱动程序)

避免oriento中的查询超时(OrientDB的node.js驱动程序),node.js,timeout,graph-databases,orientdb,connection-timeout,Node.js,Timeout,Graph Databases,Orientdb,Connection Timeout,给定以下node.js+oriento示例代码,我遇到了一个超时问题,[OrientDB.ConnectionError[2]:read ETIMEDOUT],这是我在长时间不活动后第一次进行DB查询。在超时错误之后,连接以某种方式重新初始化,下一个查询正常运行 var oriento=require(“oriento”), server=oriento({…}), db=服务器。使用(“用户”); var getData=function(语句、选项、回调){ 查询(语句,选项)。然后(函数(

给定以下
node.js
+
oriento
示例代码,我遇到了一个超时问题,
[OrientDB.ConnectionError[2]:read ETIMEDOUT]
,这是我在长时间不活动后第一次进行DB查询。在超时错误之后,连接以某种方式重新初始化,下一个查询正常运行

var oriento=require(“oriento”),
server=oriento({…}),
db=服务器。使用(“用户”);
var getData=function(语句、选项、回调){
查询(语句,选项)。然后(函数(数据){
回调(空,数据);
}).catch(回调);
};
因此,我有以下问题:

  • 这是正确的方法还是我应该调用
    oriento({…})。每次进行查询时使用(“用户”)
    ,而不是重用连接对象
  • 如果这是正确的方法,为什么不自动验证和刷新连接
  • 我如何手动检查我不会遇到超时(即验证连接)并强制刷新连接

  • 有什么建议比以下相当丑陋的黑客更好,通过每分钟ping数据库来保持传输套接字

    setInterval(function(db) {
        db.query("select from user").then(function(data) {
            console.log("still alive");
        }).catch(function(err) {
            console.error(err);
        });
    }, 60000, db);
    

    我在windows azure上也有同样的问题,因为如果在4分钟内未使用连接,WA将关闭连接(可配置为30分钟)。你找到更优雅的解决方案了吗?没有。我目前在生产中有下面的解决方案,从那以后就没有任何问题。虽然这是一个相当丑陋的解决办法。oriento问题列表上也有一个相应的问题,但我想自从我在那里发布以来,没有人研究过这个问题。如果使用连接池中的多个套接字,加载后会发生什么?你只需要维持其中一个,其余的就会变得陈旧,一旦你再次加载,你就会得到一个陈旧的连接。我尝试使用重试模式解决这个问题,如果出现连接错误,我会重新初始化连接,然后重试查询。我希望在创建套接字时能将keepAlive设置为true。你看,我自己并不真的想关心套接字,我想让驱动程序来做。我也不想关心池,我希望司机这样做。我的问题不是连接永久性地断开,我必须对此采取一些措施,而是在关闭套接字的情况下,超时消息需要大约30秒才能回复,并且查询不会运行。紧接着,下一个查询就可以正常运行了。所以“修复”对我来说是一个解决方案,因为它只是防止出现超时、丢失查询和等待半分钟的情况。已经运行了一周了我也有同样的问题。。到目前为止有什么解决办法吗?