最近、nodejs、express、https、およびmysqlを使用して残りのAPIを開発しました。この作業は始まりましたが、2〜3日後に私はサーバーが応答していないという不満を持ち始め、ほとんどの時間を返すように要求しました。Node.jsサーバーが特定のリクエストの後に応答を返さない
基本的には、私のnode.jsアプリが要求に応答しなくなってしまいます。私のコンソールでルートが実行され、クライアント(Androidアプリ)からのHTTPコールがすべてサーバーに到達することさえあります。私のnode.jsアプリケーションサーバーを再起動して、必然的に何かが再び停止するまで、すべてが再び動作を開始します。アプリがクラッシュすることはなく、リクエストに応答しなくなるだけです。
エラーは発生していません。すべてのDB接続エラーを処理してログに記録して、どこから開始するかわかりません。
私のデータベース接続コードはここにある:
// 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);
かもしれないものに関してどのような手掛かり私はこの問題をどのように解決することができますか?ここで
は私のスタックです:(ノード-MySQLを使用して)(エクスプレス4.15.2 + PM2 2.4.6を使用して)Ubutnu 14.04とnginxの持つデジタルオーシャンサーバー上の
Node.jsのデータベースのMySQL
あなたはまた、HTTP要求を処理するコードを表示する必要があります:あなたは結果を処理する際に、スタイルのポイントとして は、次の手順を実行します。 –
@JulianGoacher更新された投稿を参照してください – user3528954
1つのデータベース接続を作成しています。つまり、アプリケーション([source](https://github.com/mysqljs/mysql) #execution-queries-in-parallel))。 [接続プーリング](https://github.com/mysqljs/mysql#pooling-connections)を見てください。 – robertklep