@keltkelt

Утечка памяти в node.js?

Скрипт подключает бота на сервер Майнкрафт. Если боту не удается зайти два раза - он ребутает контейнер.

Проверил в процессах - течет нода. Однако, не могу понять пока что может вызывать этот эффект.

var mineflayer = require('mineflayer');
const {
    exec
} = require("child_process");

var interval = 20
var count = 0

    console.log("Запущен скрипт: " + new Date().toLocaleString())

    async function doStuff() {

    if (count > 1) {
        console.log("Ребут: " + new Date().toLocaleString())
        count = 0
        //какой-то код, который не влияет.
    } else {

        count++

        var botName = "Arkadii7318"

            const bot = mineflayer.createBot({
            host: "play.minecraft.ru",
            port: 25570,
            username: botName,
            version: '1.12.2'
        });

        bot.on('login', login => {
            count = 0
            setTimeout(() => bot.end(), 3000)
        })

    }

}

let checking = setInterval(() => doStuff(), interval * 1000);
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
@de1m
Проблему конечно решать надо, но можно до того времени воспользоваться к примеру pm2, с такими настройками
root@noderelay:/opt/bc-relay# cat ecosystem.yml 
apps:
  - script: /opt/bc-relay/index.js
    name: "app"
    max_memory_restart: '500M'
    exec_mode: "cluster"

Он будет перезапускать скрипт, если потребление памяти будет больше 500мб.
Хотя я думаю, что такую штуку надо в любом случае делать, ошибка может в другом месте появиться и всё развалится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы