使用top命令(按Shift+M按内存使用排序)识别占用高的无关进程(如未使用的数据库服务、测试应用),通过kill -9 <PID>终止;用systemctl disable <service_name>禁用不必要的系统服务(如firewalld、avahi-daemon),减少后台内存消耗。
当系统内存充足时,缓存会占用大量内存。可通过以下命令手动释放(释放后会影响文件访问速度,建议在低峰期操作):
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
sync将缓存数据写入磁盘,echo 3释放页面缓存、dentries和inodes。
Swappiness控制系统使用Swap分区的倾向(默认60,值越高越易用Swap)。降低该值可减少Swap使用,提升内存利用率。编辑/etc/sysctl.conf,添加:
vm.swappiness = 10
执行sudo sysctl -p使更改生效。
通过sudo yum update -y更新CentOS系统和pgAdmin相关软件包,修复已知内存泄漏或性能Bug。
pgAdmin的配置文件(~/.pgadmin/config_local.py,用户级优先)可通过以下参数减少内存占用:
DATA_RESULT_ROWS_PER_PAGE = 500 # 默认1000,改为500
CONFIG_DATABASE_CONNECTION_POOL_SIZE = 10 # 默认5,根据并发需求调整
CONFIG_DATABASE_CONNECTION_MAX_OVERFLOW = 20 # 最大溢出连接数
export PGADMIN4_PYTHON_MEMORY_LIMIT=2048 # 临时生效(MB),建议设为系统内存1/4
echo 'export PGADMIN4_PYTHON_MEMORY_LIMIT=2048' >> ~/.bash_profile # 永久生效
pgAdmin基于Flask框架,多线程处理请求。编辑pgadmin4.conf(通常位于/var/lib/pgadmin/或/usr/pgadmin4/),优化线程配置:
[server:main]
use_reloader = False # 生产环境禁用自动重载
threads = 10 # 线程数,建议设为CPU核心数+1(如4核设为5)
processes = 2 # 进程数,根据内存调整(每进程约占用500MB-1GB)
Preferences → Browser → Properties,设置:
Session expiration time:1小时(默认24小时)User inactivity timeout:30分钟(默认禁用)~/.pgadmin/storage/存储临时查询结果和备份,定期清理(保留最近7天):find ~/.pgadmin/storage/ -type f -mtime +7 -delete
可添加到crontab(crontab -e)实现每周自动清理:0 3 * * 0 find ~/.pgadmin/storage/ -type f -mtime +7 -delete
EXPLAIN ANALYZE分析慢查询,避免复杂连接、子查询和全表扫描;为常用查询字段创建索引。pgbouncer等连接池管理数据库连接,减少pgAdmin与PostgreSQL之间的连接开销(连接池大小建议设为并发用户数的1.5倍)。旧版本可能存在内存泄漏或性能问题,升级到最新稳定版(如pgAdmin 4.100+),新版本通常会修复已知的内存优化Bug。
top、htop(sudo yum install htop -y)实时查看pgAdmin进程内存占用;通过pgAdmin内置的Dashboard → Server Activity监控数据库连接状态。sudo systemctl restart pgadmin4),释放累积的内存;清理PostgreSQL日志文件(/var/log/postgresql/),避免日志占用过多磁盘空间影响系统性能。