在使用passport时,Node.js服务器在收到少量请求后被卡住

在使用passport时,Node.js服务器在收到少量请求后被卡住,node.js,express,passport.js,Node.js,Express,Passport.js,我正在编写一个node.js应用程序,使用passport进行身份验证。我注意到一种奇怪的行为: 如果我使用此代码,我的服务器会在10个请求后卡住(我删除了一些不相关的代码): 我试图完全删除任何与passport相关的代码,我的服务器工作正常,但我仍然想使用passport库。。。 需要帮忙吗?我什么都试过了,我需要一些指导。谢谢你的帮助,找到了问题 服务器缺乏响应的主要原因是,反序列化用户函数从未调用过done 这是因为我遇到了数据库连接泄漏的问题。我不知道MySqlBl模块,但如果您在完成

我正在编写一个node.js应用程序,使用passport进行身份验证。我注意到一种奇怪的行为: 如果我使用此代码,我的服务器会在10个请求后卡住(我删除了一些不相关的代码):

我试图完全删除任何与passport相关的代码,我的服务器工作正常,但我仍然想使用passport库。。。
需要帮忙吗?我什么都试过了,我需要一些指导。

谢谢你的帮助,找到了问题

服务器缺乏响应的主要原因是,
反序列化用户
函数从未调用过
done


这是因为我遇到了数据库连接泄漏的问题。

我不知道MySqlBl模块,但如果您在完成后不关闭数据库连接,它可能会泄漏数据库连接。正如@JoachimIsaksson所说,您的MySqlBl模块可能正在打开连接,而从未关闭连接,这填补了问题。当池已满时,其他请求将被保留,等待套接字释放。请将db连接移动到模块,以便可以重用db对象
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var MySqlBl = require('./server/db/mysqlbl');

var app = express();    

app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser(function (user, done) {
    done(null, user.userName);
});

passport.deserializeUser(function (username, done) {
    var mysqlbl = new MySqlBl();
    mysqlbl.getUser(username, onGetUserCompleted);

    function onGetUserCompleted(user) {
        if (user === undefined) {
            done('Problem deserializing user');
        }

        done(null, user);
    };
});

passport.use(new LocalStrategy(function (username, password, done) {
    var mysqlbl = new MySqlBl();
    mysqlbl.getUser(username, onGetUserCompleted);

    function onGetUserCompleted(user) {
            return done(null, user);
        };
    }
));

app.use(app.router);

require('./server/routes')(app);