node运行接口,刚开始是正常的,间隔一段时间后变成 read ECONNRESET
发布于 5 年前 作者 yjl000 3524 次浏览 来自 问答

刚开始的时候,node main.js是正常的,接口也可以正常返回,但是放着一段时间,大概5~10分钟,就会报错 read ECONNRESET,然后重新运行node main.js又可以了,间隔一段时间又是同样的问题。node小白,求大神指点一下error.png

6 回复

相关代码放下呗 比如api.js 33行 看你好像貌似是连接数据库查询了吧,是不是数据库关闭了

数据用navacat连接可以正常连接,估计是我接口问题,但是看不出来,因为我从新跑node main.js之后又可以正常一段时间 下面是api.js的代码 var models = require(’./db’);//数据库链接信息 var express = require(‘express’); var router = express.Router(); var mysql = require(‘mysql’); var $sql = require(’./sqlfun’);//sql语句

// 连接数据库 var conn = mysql.createConnection(models.mysql);

conn.connect();

var jsonWrite = function(res, ret) { if(typeof ret === ‘undefined’) { res.json({ code: ‘1’, msg: ‘操作失败’ }); } else { res.json(ret); } };

// 登录用户接口 router.post(’/userLogin’, function (req, res) {

var sql = $sql.user.login; var params = req.body; let userError = { status: ‘404’, // 404 用户名不存在;200 登录成功; -1 密码错误 message: ‘用户名不存在!’ }; conn.query(sql, [params.userName], function(err, result) { if (err) { console.log(err); } if (result) { //jsonWrite(res, result); for(var i = 0; i < result.length; i++){ if (result[i].password == params.password) { userError.status = ‘200’; userError.message = ‘success’; userError.data = { name: params.userName, userID: result[i].userID } return res.send(JSON.stringify(userError)); } else { userError.status = ‘-1’; userError.message = ‘用户名或密码错误!’; return res.send(JSON.stringify(userError)); } } return res.end(JSON.stringify(userError)); } })

})

// 增加用户接口 router.post(’/addUser’, (req, res) => { var sql = $sql.user.add; var search = $sql.user.search; var params = req.body; params.userID = Math.floor(Math.random () * 900) + 100; let addError = { status: ‘200’, // 200 注册成功; -200 用户已存在 message: ‘注册成功’ }; conn.query(search, [params.userName], (err, isSave) => { if (err) { console.log(err); } if (isSave.length > 0) { addError.status = ‘-200’; addError.message = ‘用户名已存在!’; return res.send(JSON.stringify(addError)); } else { conn.query(sql, [params.userName,params.password, params.userID], function(err, result) { if (err) { console.log(err); } if (result) { // jsonWrite(res, result); console.log(result) res.end(JSON.stringify(addError)); } }) } })

}); module.exports = router;

main.js的代码比较少,就上个截图吧,各位大佬帮忙看看,感激不尽QQ截图20190404180043.png

是不是闲置太久 mysql 连接超时并自动断开。这个时候再去请求web接口就会卡在那里。 考虑下使用 mysql 的 pool 功能

看到了 conn.connect(); 但是没看到 conn.end();是没贴出来吗?

谢谢大神们的指导,现在可以了,原来是每调一次接口,数据库的连接要开启、结束一次,不能一直挂着,不然时间一长就自动断掉了。再次感谢!

回到顶部