First four levers: shared_buffers = 25 % RAM, effective_cache_size = 75 % RAM, work_mem = RAM / (max_connections × 3), maintenance_work_mem = 1-2 GB. Then enable pg_stat_statements, pick the top-10 by total_exec_time, add indexes guided by EXPLAIN ANALYZE. Watch autovacuum (pg_stat_user_tables.last_autovacuum): always lagging → bump autovacuum_max_workers.
Below: details, example, related terms, FAQ.
-- pgbench benchmark before/after tuning
$ pgbench -c 10 -T 60 mydb
-- top-10 slowest queries
SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements
ORDER BY total_exec_time DESC LIMIT 10;
-- Index + verify
CREATE INDEX CONCURRENTLY ON orders (user_id, created_at DESC);
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 1 LIMIT 20;Health Score is a comprehensive assessment of site technical health across 20+ parameters: SSL, security headers, response speed, SEO technical factors, and availability.
20+ parameters in one number: SSL, headers, speed, SEO technical factors.
Each parameter with explanation — what is checked, what was found, how to fix.
Compare Health Score at different dates — see progress or regression.
Set up automated Health Score checks and get notified when the score drops.
quick pre-release audit
technical baseline score
client site check
header security audit
Health Score check history and real-time site health monitoring.
Sign up freeYes, as a starting point. pgtune.leopard.in.ua generates a base config. From there, tune to your workload (OLTP vs OLAP).
Tables > 100 GB or purging old data. For < 10 GB — unnecessary complexity.
At > 200 concurrent — yes, Postgres per-connection backend eats 10 MB RAM + context switches.