PostgreSQL, eris (-sharder): проблема с пулом и памятью - PullRequest
0 голосов
/ 17 марта 2019

У меня бот Discord, и сегодня он обновлен с discord.js до eris. Однако существует проблема:

  • Когда я создаю пул (new Pool()) в каждом загружаемом шарде (внутри функции launch(), у меня около 80 шардов), слишком много соединений создано с моим сервером PostgreSQL. Это вызывает ошибку error: sorry, too many clients already, и бот ничего не может сделать.

  • Когда я создаю пул в membercount.js (см. Ниже), а затем экспортирую его, по какой-то причине память уходит за крышу - она ​​настолько увеличивается, что бот вылетает.

// bot.js
const pool = require('./membercount.js').pool;

const Base = require('eris-sharder').Base;
class Class extends Base {
    constructor(bot2) {
        super(bot2);
    }

    launch() {

        const bot = this.bot;
        bot.pool = pool;

        // ... code
    }
}

// membercount.js
const config = require('./config.json'),
    Sharder = require('eris-sharder'),
    sharder = new Sharder.Master(config.token, '/bot.js', {
            clusters: 32,
            // ... config
        }
    });

const { Pool } = require('pg');
const pool = new Pool({
    host: 'localhost',
    port: 5432,
    user: 'membercount',
    database: 'membercount',
    password: 'nope'
});

pool.connect();

module.exports.pool = pool;

sharder.on('stats', async stats => {
    await pool.query("UPDATE stats SET botstats=$1 WHERE index=1", [stats]);
});

Я не знаю, как мне справиться с этим, чтобы он не создавал слишком много подключений к базе данных postgres или чтобы объем памяти не увеличивался. у кого-нибудь есть решение? Пожалуйста, прокомментируйте, если вам нужно больше информации!

...