Nodejs关闭问题

问题描述:

我在我的节点Web应用程序中使用RedisStore的快速会话。Nodejs关闭问题

版本的NodeJS:4.2.4 JS:ES6

“明示”: “^ 4.13.3”, “快递会话”: “https://github.com/echorohit/session/tarball/1d22749aa46280a24a4ee3a993ba0772e6e1e2df”, “ioredis”:“^ 1.13.0“, ”connect-redis“:”^ 3.0.1“,

我观察到有一次,会话在用户之间越来越混淆。我使用newrelic洞察来记录一些指标,所以我用它来调试问题。

这是我的发现。从快车会话的store.js

代码段

Store.prototype.regenerate = function(req, fn){ 
    var self = this; 
    //CHECKPOINT 1 
    log.addNewRelicCustomParameter("CHECKPOINT1",req.sessionID); 
    this.destroy(req.sessionID, function(err){ 
     //CHECKPOINT 2 
     log.addNewRelicCustomParameter("CHECKPOINT2",req.sessionID); 
     self.generate(req, fn); 
     fn(err); 
    }); 
}; 

CHECKPOINT 1.的req.sessionID是正确的,但在奇怪CHECKPOINT 2.的req.sessionID印刷为其他请求在新文物日志中同时执行。

我相信这是会话混淆的原因。但无法进一步调试以找到它的根本原因。请帮助我提示如何找到问题的根本原因。不知道这是否真的是封闭范围问题。

看起来实际上没有问题!

如果您在每个检查点设置断点,则预计有时req.sessionID在断点之间有所不同,因为第二个断点位于异步回调中。

+0

它没有断点问题。因为这些数据是由newrelic见解给出的,所以在检查点1时值为session1,在检查点2时值为session2。我在这里假设newrelic正确地检测到一个请求执行流程,因此能够检测到异常。这里是洞察示例查询来检测问题SELECT * FROM Transaction WHERE'checkpoint1'!='checkpoint2' – ogesh