最近我开发了一个使用nodejs,express,https和mysql的rest API。这在开始时工作良好,但在两到三天后,我开始抱怨服务器没有响应,并且大多数时间要求返回超时。Node.js服务器在某些请求后没有返回响应
基本上在一定数量的任务后,我的node.js应用程序停止响应请求。我甚至看到路由在我的控制台上被触发,并且来自我的客户端(Android应用程序)的HTTP调用到达服务器所有这些。但是重新启动我的node.js应用服务器,所有事情都会重新开始,直到事情不可避免地再次停止。该应用程序从不崩溃,它只是停止响应请求。
我没有收到任何错误,并且我确保处理并记录所有数据库连接错误,所以我不确定从哪里开始。
我的数据库连接的代码是在这里:
// call the packages we need
var mysql = require('mysql'); //call mysql for db connection
// configure the function to connect to the database
var connection = mysql.createConnection({
connectionLimit : 1000,
host : 'localhost',
user : 'test',
password : 'abcdefghi',
socketPath : '/var/run/mysqld/mysqld.sock'
});
exports.connection = connection;
我的数据库查询代码是在这里:
var db = require('../dbconnection');
var getPostId = function(id,callback){
var sql = "SELECT post_id FROM posts.post_feeds WHERE id=?";
db.connection.query(sql,[id],callback);
}
我的应用程序服务器代码:
const fs = require('fs');
const https = require('https');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const getData = require('./dbhandler/getData');
router.route('/postids/')
.post(function(req,res){
var success;
try {
var categoryId = req.body.categoryId;
getData.getPostId(categoryId,function(error, results, fields){
if (!error){
success = 1;
datasets = [];
db = {}
for (var i = 0 ; i < results.length; i++) {
db = {
"postId" : results[i]['post_id']
}
datasets.push(db);
}
res.json({"success" : success, "datasets" : datasets});
} else{
logger.error("Route = /postfeedsbycategory/, error = "+error);
success = 0;
res.json({"success" : success});
}
});
} catch(error){
logger.error("Route = /postfeedsbycategory/, error = "+error);
success = 0;
res.json({"success" : success});
}
});
app.use('/api/v2', router);
app.listen(port);
任何线索,什么可能正在发生以及我如何解决这个问题?
这里是我的筹码:
与Ubutnu 14.04和Nginx的数字海洋服务器上的Node.js(使用快递4.15.2 + PM2 2.4.6)数据库(使用节点的MySQL)
您应该显示的代码处理HTTP请求也。 –
@JulianGoacher请参阅已更新的文章 – user3528954
您正在创建单个数据库连接,这意味着您只能在应用程序的任何时候执行一个查询([source](https://github.com/mysqljs/mysql) #执行查询 - 在平行))。你可能想看看[连接池](https://github.com/mysqljs/mysql#pooling-connections)。 – robertklep