Смоленск 1.6 Postgres timeout - получен запрос на "вежливое" выключение

Tempest

New member
Сообщения
7
#1
Доброго времени суток.

Установлен штатный postgres из дистрибутива.

Код:
root@server:/lib/systemd/system# dpkg -l | grep postgresq
ii  postgresql                                    9.6+181.astrase3                          all          object-relational SQL database (supported version)
ii  postgresql-9.6                                9.6.10-astrase3                           amd64        object-relational SQL database, version 9.6 server
ii  postgresql-astra                              17                                        amd64        PostgreSQL Astra edition metapackage
ii  postgresql-client                             9.6+181.astrase3                          all          front-end programs for PostgreSQL (supported version)
ii  postgresql-client-9.6                         9.6.10-astrase3                           amd64        front-end programs for PostgreSQL 9.6
ii  postgresql-client-common                      181.astrase3                              all          manager for multiple PostgreSQL client versions
ii  postgresql-common                             181.astrase3                              all          PostgreSQL database-cluster manager
ii  postgresql-contrib-9.6                        9.6.10-astrase3                           amd64        additional facilities for PostgreSQL
Случился форсмажор, сервер завершил работу нештатно. Теперь при запуске postgres пытается восстановить базу (текстовые логи сейчас выложить не могу, пишу от руки; на фотографии экрана виден настоящий текст):

Код:
Система БД была остановлена нештатно; производится автоматическое восстановление
....
система баз данных запускается
система баз данных запускается
система баз данных запускается
....
получен запрос на вежливое выключение
выключение
система БД выключена
Интернет для штатных версий пишет, что нужно менять systemd конфиг - добавлять параметр TimeoutSec в секцию [Service]. В Астре 1.6 это /lib/systemd/system/postgresql.service. После этого не забыть сделать systemctl daemon-reload. Все это сделали, но не помогло. Базе снова и снова прилетает завершение работы в процессе восстановления.

Где этот злощастный параметр у 1.6 спрятан?
 

Вложения

oko

New member
Сообщения
463
#2
to Tempest
Еще можно загрузить postgresql в single mode - тогда systemd его не обслуживает и не убивает по timeout (вначале su postgres, затем
/путь-к-исполняемому-файлу-postgres --single -c config_file=/путь-к-postgresql.conf -D /путь-к-каталогу-установки-postgres -P -d 1). Дождаться загрузки базы и убить процесс через kill -15 pid-процесса-postgres. Очистить кэш. После этого можно перезапуститься через стандартный вызов (с использованием systemd-сервиса) уже без таймаутов...
 

Tempest

New member
Сообщения
7
#3
Спасибо за быстрый ответ.

Думаю Ваше решение подходит для ручного восстановления работы. Но оно предполагает наличие админа (или как минимум юзера с прямыми руками) на комплексе в случае такой ситуации. А хочется иметь дать возможность постгресу самому восстановиться раз он так может. Тем не менее, хочу уточнить:

Это Вы говорите о командах вида:

Код:
sync
echo 3 > /proc/sys/vm/drop_caches
?
 

oko

New member
Сообщения
463
#4
to Tempest
Кэш postgresql, да, приведенной вами командой...
 
Сообщения
3
#5
Добрый день! Проблема актуальна! Кто-нибудь решил ситуацию исправлением работы работы службы systemd?
Выставлял параметр в
/etc/systemd/multi-user.target.wants/@postgresql.service
а так же в /run/systemd/generator/postgresql.service.wants/@postgresql@9.6-xxx.service
Выставлял разные значения от нуля до много.. Но при запуске изменений нет, в режиме восстановления примерно 3 секунды и получает запрос на вежливое отключение.
Я знаю что можно сделать в сингле но надо что бы восстанавливалась сама, как и раньше, дежурная смена задолбает потом.