45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
const os = require('os');
|
|
const { createClient, writeJson, resultsDir } = require('./benchmark-lib');
|
|
const path = require('path');
|
|
|
|
const main = async () => {
|
|
const client = await createClient();
|
|
try {
|
|
const version = await client.query('SHOW server_version;');
|
|
const settings = await client.query(`
|
|
SELECT name, setting, unit
|
|
FROM pg_settings
|
|
WHERE name IN ('max_connections', 'shared_buffers', 'work_mem', 'effective_cache_size')
|
|
ORDER BY name;
|
|
`);
|
|
const activity = await client.query(`
|
|
SELECT state, COUNT(*)::int AS total
|
|
FROM pg_stat_activity
|
|
WHERE datname = current_database()
|
|
GROUP BY state
|
|
ORDER BY state;
|
|
`);
|
|
const snapshot = {
|
|
generatedAt: new Date().toISOString(),
|
|
node: process.version,
|
|
platform: `${process.platform} ${process.arch}`,
|
|
osRelease: os.release(),
|
|
cpuCount: os.cpus().length,
|
|
totalMemoryMb: Math.round(os.totalmem() / 1024 / 1024),
|
|
freeMemoryMb: Math.round(os.freemem() / 1024 / 1024),
|
|
postgresVersion: version.rows[0]?.server_version,
|
|
postgresSettings: settings.rows,
|
|
postgresActivity: activity.rows
|
|
};
|
|
writeJson(path.join(resultsDir, 'resource_snapshot.json'), snapshot);
|
|
console.log(JSON.stringify(snapshot, null, 2));
|
|
} finally {
|
|
await client.end();
|
|
}
|
|
};
|
|
|
|
main().catch((error) => {
|
|
console.error(error);
|
|
process.exit(1);
|
|
});
|