每个循环的异步超过最大连接数

时间:2017-04-11 19:20:24

标签: javascript mysql asynchronous heroku

为什么我的连接没有在每个循环中释放?相反,它超过了我的数据库的最大连接数并使我的应用程序崩溃。显然findOneByPhone会释放连接,但与Async.each结合使用时不会 - 我在这里做错了什么?

此函数在每个循环的异步中运行。

this.findOneByPhone = function(phone, req, res, callback) {
        connection.acquire(function(err, con) {
            con.query('select * from users where phone = ?', [phone], function(err, result) {
                con.release()
                if (err) {
                    callback(err)
                } else {
                    callback(null, JSON.stringify(result[0], null, 4))
                }
            })
        })
    }

这是循环。

var friendsAlreadySignedUp = []

        Async.each(friends, function(friend, callback) {
            var formattedNumber = Phone.format(Phone.parse(friend.phoneNumbers[0].number, {country: { default: 'US' }}), 'International_plaintext')
            User.findOneByPhone(formattedNumber, null, null, function(err, foundUser) {
                // If user exists in DB, add corresponding object to friendsAlreadySignedUp
                if (foundUser) {
                    var foundUserJSON = JSON.parse(foundUser)
                    foundUserJSON.originalNumber = friend.phoneNumbers[0].number
                    friendsAlreadySignedUp.push(foundUserJSON)
                    callback()
                } else {
                    callback()
                }
            })
        }, function() {
            res.json({status: 0, message: 'findFriends succeeded.', result: friendsAlreadySignedUp})
        })

它导致了这一点。

Error: ER_USER_LIMIT_REACHED: User 'b85497d5b39b53' has exceeded the 'max_user_connections' resource (current value: 15)

0 个答案:

没有答案