質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

0回答

2651閲覧

node-js+expressでメモリリーク

moto-a

総合スコア17

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2018/02/17 04:06

編集2018/02/17 06:05

前提・実現したいこと

node-js メモリリーク解消
以下のコードでgetTestを呼び出すとメモリリークしていると思われます。
引数としてconfig, loggerを渡しているのが問題でしょうか?
メモリリークしていると思われる理由ですが、
メモリ使用量をpm2のモニターで確認していますが起動時40Mから1日で500Mぐらいまで大きくなっているためメモリリークしていると判断しました。

getTest内で毎回requireした方がよいでしょうか?
var config = require('config');
var log4jsLogger = log4('system');
これだと無駄というか処理速度が遅くなる気がしています。

configやloggerの使い方は毎回requireした方が良いのか、ご意見をいただけたらと思います。

よろしくお願いします。

該当のソースコード

node

1[app.js] 2var config = require('config'); 3var path = require('path'); 4var express = require('express'); 5var routes = require('./routes/index'); 6var logger = require('morgan'); 7var cookieParser = require('cookie-parser'); 8var bodyParser = require('body-parser'); 9var app = express(); 10var log4 = require('./log4jsLogger'); 11var log4jsLogger = log4('system'); 12~中略~ 13// ルーティング設定 14routes(app, $dir, config, log4jsLogger); 15 16[index.js] 17var getTest = require('./APIs/getTest'); 18 19module.exports = function (app, $dir, config, logger) { 20 getTest(app, '/getTest', config, logger); 21}; 22 23[getTest.js] 24module.exports = function (app, url, config, logger) { 25 app.post(url, function (req, res) { 26 var moment = require('moment'); 27 var fsExtra = require('fs-extra'); 28 var apiResponse = require('../apiRes'); 29 var sequelize = require('sequelize'); 30 var seq = new sequelize(config.dbConnect); 31 var ProductData = require('../../models/product_data'); 32 var prdData = ProductData(sequelize, seq); 33 prdData.bulkCreate( 34 reqRows, { validate: true } 35 ).then(function () { 36 var row = [{ msg: '正常終了' }]; 37 apiResponse(res, 1, row); 38 }).catch(function (err) { 39 logger.error(err); 40 var row = [{ msg: err }]; 41 apiResponse(res, -1, row); 42 }); 43 }); 44}; 45

補足情報(FW/ツールのバージョンなど)

node 8.9.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/17 04:20

出ているエラーの内容など、何を元にメモリリークしていると判断しているのか追記すると、皆さんが回答しやすいと思います。
moto-a

2018/02/17 05:08

ありがとうございます。メモリ使用量をpm2のモニターで確認していますが起動時40Mから1日で500Mぐらいまで大きくなっているためメモリリークしていると判断しました。またconfigやloggerの使い方は毎回requireした方が良いのかご意見をいただけたらと思います。
退会済みユーザー

退会済みユーザー

2018/02/17 05:39

では、その内容を質問文の方に追記をお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問