У меня бот 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 или чтобы объем памяти не увеличивался. у кого-нибудь есть решение? Пожалуйста, прокомментируйте, если вам нужно больше информации!