连接问题
sudo iptables -L -n
,未放行则用sudo ufw allow 5432
开放。sudo systemctl status postgresql
,未启动则用sudo systemctl start postgresql
启动。sudo tail -f /var/log/postgresql/postgresql-{版本号}-main.log
。查询性能问题
EXPLAIN
分析慢查询:EXPLAIN SELECT * FROM table WHERE condition
,优化索引或查询语句。pg_stat_statements
扩展统计SQL性能:在postgresql.conf
中设置shared_preload_libraries = 'pg_stat_statements'
并重启服务。磁盘空间问题
sudo pg_archivecleanup /pgdata/pgwal 旧日志文件名
。max_wal_size
、checkpoint_timeout
等,避免日志堆积。内存泄漏或OOM问题
pg_top
监控内存使用,调整work_mem
参数,检查连接池是否泄漏。死锁问题
pg_locks
视图查看锁状态,用pg_cancel_backend
或pg_terminate_backend
终止死锁事务。配置与权限问题
postgresql.conf
和pg_hba.conf
配置是否正确,如listen_addresses
、用户权限等。0700
,日志目录可写。日志分析与监控
sudo tail -f /var/log/postgresql/postgresql-{版本号}-main.log
。pgBadger
等工具分析日志,生成性能报告。说明:部分路径中的{版本号}
需替换为实际安装的PostgreSQL版本(如15
),操作前建议备份数据,复杂问题可参考官方文档或社区支持。