0

我的 PostgreSQL 服务超时。我在这里读到,如果没有提供,默认超时为 60 秒,我们可以配置PGCTLTIMEOUT环境变量。我不确定是为用户添加还是为系统添加,以及如何验证它是否正常工作。

由于这个超时问题很少发生,我不知道如何测试它是否有效。

更新: Pated PG 日志

2021-04-15 10:27:07.594 IST [21148] WARNING:  autovacuum not started because of misconfiguration 
2021-04-15 10:27:07.594 IST [21148] HINT:  Enable the "track_counts" option. 
2021-04-15 10:27:07.684 IST [9952] LOG:  database system was interrupted; last known up at 2021-01-27 22:17:24 IST 
2021-04-15 10:30:57.914 IST [9952] LOG:  database system was not properly shut down; automatic recovery in progress 
2021-04-15 10:30:57.935 IST [9952] LOG:  redo starts at 897/8CFDE078 
2021-04-15 10:31:42.132 IST [9952] LOG:  invalid record length at 897/935E1C78: wanted 24, got 0 
2021-04-15 10:31:42.132 IST [9952] LOG:  redo done at 897/935E1C50 
2021-04-15 10:31:42.132 IST [9952] LOG:  last completed transaction was at log time 2021-01-27 22:21:28.931241+05:30
2021-04-15 10:31:46.019 IST [21148] LOG:  database system is ready to accept connections

在事件查看器中,我可以看到超时错误并且服务未启动。我检查了任务管理器,有postgres.exe运行但没有pg_ctl.exe

4

1 回答 1

0

问题是当你停止数据库时你没有正确关闭它,而是让它崩溃。

如您的日志文件所示,这使得有必要在启动时执行崩溃恢复。这可能需要更长或更短的时间,具体取决于需要恢复的工作量。有时这需要比超时时间更长的时间,有时则不会。但即使pg_ctl超时,服务器最终也会启动。

正确的解决方案是更改您的设置,以便 PostgreSQL 正确关闭而不是崩溃。

于 2021-06-25T06:54:47.710 回答