全项目数据库性能优化
This commit is contained in:
@@ -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: {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user