Azure虚拟机Ubuntu系统PostgreSQL 9.5服务自动停机问题求助
PostgreSQL 9.5闲置数小时自动停机的解决方法

在Azure虚拟机的Ubuntu系统上运行PostgreSQL 9.5时,使用正常但闲置数小时后会自动停机,仅能通过重启服务恢复。以下是针对性的排查与解决步骤:
查看服务状态与系统日志,定位停机原因
运行以下命令查看当前服务状态:systemctl status postgresql
调取近24小时的服务日志排查异常:journalctl -u postgresql --since "24 hours ago"
重点关注日志中OOM killer(内存不足被系统终止)、shutdown、crash这类关键信息,确定停机触发源。检查Azure虚拟机的自动关机配置
登录Azure门户,找到目标虚拟机:- 进入「操作」>「自动关机」页面
- 确认是否开启了闲置自动关机功能,若开启则直接关闭,或按需调整闲置触发时长。
调整PostgreSQL闲置连接与存活参数
编辑PostgreSQL主配置文件(路径通常为/etc/postgresql/9.5/main/postgresql.conf),修改以下参数:- 将
idle_in_transaction_session_timeout设为0(禁用闲置事务超时)或较大值(如3600000,即1小时,单位为毫秒) - 优化TCP存活探测参数,确保连接不被异常断开:
tcp_keepalives_idle = 600 tcp_keepalives_interval = 60 tcp_keepalives_count = 10
修改完成后重启服务生效:
systemctl restart postgresql- 将
配置OOM Killer优先级,避免服务被强制终止
若日志显示存在内存不足(Out of memory)情况,需调整系统OOM Killer对PostgreSQL的优先级:- 编辑(或创建)
/etc/systemd/system/postgresql.service文件,添加以下内容:[Service] OOMScoreAdjust=-1000 - 重新加载systemd配置并重启服务:
systemctl daemon-reloadsystemctl restart postgresql
- 编辑(或创建)
设置服务自动重启与开机自启
确保服务开机自动启动:systemctl enable postgresql
同时配置服务意外停止后自动重启:编辑/etc/systemd/system/postgresql.service,添加:[Service] Restart=always RestartSec=5重新加载配置并重启服务,确保策略生效。
内容的提问来源于stack exchange,提问作者Mau
相关产品推荐
相关产品推荐

