ваше сообщение коммита

This commit is contained in:
2025-12-10 09:27:36 +03:00
parent 13ac707844
commit 863759e3e7
21 changed files with 1738 additions and 301 deletions

View File

@@ -105,10 +105,10 @@ class DatabaseConnectionManager {
user: config.db_user,
password: config.db_password,
ssl: false,
max: 10,
min: 0,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
max: 100, // Увеличиваем максимальное количество клиентов (было 10)
min: 10, // Минимальное количество клиентов для лучшей производительности (было 0)
idleTimeoutMillis: 180000, // Увеличиваем до 180 сек (было 30)
connectionTimeoutMillis: 180000, // Увеличиваем таймаут подключения до 180 сек (было 2)
maxUses: 7500,
allowExitOnIdle: true,
maxLifetimeSeconds: 0

View File

@@ -15,6 +15,12 @@ class DeployParamsService {
database: process.env.DB_NAME || 'dapp_db',
password: process.env.DB_PASSWORD || 'dapp_password',
port: process.env.DB_PORT || 5432,
max: 100, // Увеличиваем максимальное количество клиентов
min: 10, // Минимальное количество клиентов
idleTimeoutMillis: 180000, // Время жизни неактивного клиента (180 сек)
connectionTimeoutMillis: 180000, // Таймаут подключения (180 сек)
maxUses: 7500,
allowExitOnIdle: true,
});
// Используем глобальный экземпляр encryptedDb
}

View File

@@ -25,11 +25,21 @@ async function getUserTokenBalances(address) {
const encryptionUtils = require('../utils/encryptionUtils');
const encryptionKey = encryptionUtils.getEncryptionKey();
// Получаем токены и RPC с расшифровкой
const tokensResult = await db.getQuery()(
'SELECT id, min_balance, readonly_threshold, editor_threshold, created_at, updated_at, decrypt_text(name_encrypted, $1) as name, decrypt_text(address_encrypted, $1) as address, decrypt_text(network_encrypted, $1) as network FROM auth_tokens',
[encryptionKey]
);
// Получаем токены и RPC с расшифровкой (с таймаутом)
let tokensResult;
try {
const queryPromise = db.getQuery()(
'SELECT id, min_balance, readonly_threshold, editor_threshold, created_at, updated_at, decrypt_text(name_encrypted, $1) as name, decrypt_text(address_encrypted, $1) as address, decrypt_text(network_encrypted, $1) as network FROM auth_tokens',
[encryptionKey]
);
const timeoutPromise = new Promise((_, reject) =>
setTimeout(() => reject(new Error('Database query timeout')), 30000)
);
tokensResult = await Promise.race([queryPromise, timeoutPromise]);
} catch (error) {
logger.error('[tokenBalanceService] Ошибка получения токенов из БД:', error.message);
return []; // Возвращаем пустой массив при ошибке БД
}
const tokens = tokensResult.rows;
// Убрано - используем rpcService вместо прямого запроса к БД