我在我的節點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印刷爲其他請求在新文物日誌中同時執行。
我相信這是會話混淆的原因。但無法進一步調試以找到它的根本原因。請幫助我提示如何找到問題的根本原因。不知道這是否真的是封閉範圍問題。
它沒有斷點問題。因爲這些數據是由newrelic見解給出的,所以在檢查點1時值爲session1,在檢查點2時值爲session2。我在這裏假設newrelic正確地檢測到一個請求執行流程,因此能夠檢測到異常。這裏是洞察示例查詢來檢測問題SELECT * FROM Transaction WHERE'checkpoint1'!='checkpoint2' – ogesh