全项目数据库性能优化

This commit is contained in:
yml2213
2026-08-20 23:04:52 +08:00
parent 1c8eda2b5f
commit b5d46b2381
13 changed files with 168 additions and 43 deletions
+4 -1
View File
@@ -22,7 +22,10 @@ export function createDefaultRuntimeConfig(projectRoot: string): RuntimeConfig {
database: {
url: 'postgres://postgres:postgres@127.0.0.1:5432/order_site',
ssl: false,
maxConnections: 10,
maxConnections: 8,
idleTimeoutMs: 30_000,
connectionTimeoutMs: 5_000,
statementTimeoutMs: 15_000,
},
storage: {
+3
View File
@@ -35,6 +35,9 @@ export const ENV_OVERRIDES: readonly EnvOverride[] = [
stringEnv('DATABASE_URL', ['database', 'url']),
booleanEnv('DATABASE_SSL', ['database', 'ssl']),
integerEnv('DATABASE_MAX_CONNECTIONS', ['database', 'maxConnections']),
integerEnv('DATABASE_IDLE_TIMEOUT_MS', ['database', 'idleTimeoutMs']),
integerEnv('DATABASE_CONNECTION_TIMEOUT_MS', ['database', 'connectionTimeoutMs']),
integerEnv('DATABASE_STATEMENT_TIMEOUT_MS', ['database', 'statementTimeoutMs']),
stringEnv('STORAGE_ENDPOINT', ['storage', 'endpoint']),
stringEnv('STORAGE_BUCKET', ['storage', 'bucket']),
stringEnv('STORAGE_ACCESS_KEY_ID', ['storage', 'accessKeyId']),
@@ -45,6 +45,23 @@ export function validateRuntimeConfig(
requireInteger(issues, 'server.port', config.server?.port, { min: 1, max: 65535 })
requireInteger(issues, 'database.maxConnections', config.database?.maxConnections, { min: 1 })
requireOptionalInteger(issues, 'database.idleTimeoutMs', config.database?.idleTimeoutMs, {
min: 1,
})
requireOptionalInteger(
issues,
'database.connectionTimeoutMs',
config.database?.connectionTimeoutMs,
{ min: 1 },
)
requireOptionalInteger(
issues,
'database.statementTimeoutMs',
config.database?.statementTimeoutMs,
{
min: 1,
},
)
requireInteger(issues, 'storage.maxUploadSizeMb', config.storage?.maxUploadSizeMb, {
min: 1,
max: 100,
@@ -253,6 +270,18 @@ function requireInteger(
}
}
function requireOptionalInteger(
issues: RuntimeConfigValidationIssue[],
configPath: string,
value: unknown,
options: { min?: number; max?: number } = {},
): void {
if (value === undefined || value === null || value === '') {
return
}
requireInteger(issues, configPath, value, options)
}
function isHttpUrl(value: string): boolean {
try {
const url = new URL(value)