PostgreSQL: "ПРЕДУПРЕЖДЕНИЕ: недостаточно общей памяти" на простом SELECT

Всякий раз, когда я пытаюсь сделать простой SELECT на моей базе данных Postgres, я получаю эту ошибку:

tutorial=> select id from table LIMIT 1;
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
WARNING:  out of shared memory
ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.

Я пытаюсь увеличить "max_locks_per_transaction" до 256, увеличил все параметры памяти, он ничего не делает. Команде потребовалось больше времени, чтобы вернуться.

Все просто работало отлично в течение нескольких месяцев, затем появляется эта проблема, и я не могу отследить журналы, чтобы найти, что происходит.

Вот последовательность загрузки, когда проблема появляется, после того, как я пытаюсь перезагрузить postgres, когда эта проблема возникает:

LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  redo starts at 2/2C7A1580
LOG:  invalid record length at 2/2C848AC8: wanted 24, got 0
LOG:  redo done at 2/2C848AA0
LOG:  last completed transaction was at log time 2018-01-29 14:38:52.726603+00
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

Моя база данных реализует плагин TimescaleDB и PostGIS и состоит только из одной таблицы. Я могу сделать все остальные заявления (INSERT, UPDATE и т. Д.), Но SELECT не будет работать, и это довольно раздражает.

Это касается только этой гипертабельной. У меня есть только таблица пространственный_реф_сейс рядом с ним, и у меня нет проблем с этим.

С EXPLAIN я получаю точно такое же поведение и не записываю информацию:

tutorial=> EXPLAIN SELECT id FROM table LIMIT 1;
WARNING:  out of shared memory
ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.

Сервер представляет собой 64-битное ядро ​​Debian 2x86 и 2 ГБ памяти. Я настроил эту базу данных с помощью Docker, выполнив следующие действия: http://docs.timescale.com/v0.8/getting-started/installation/linux/installation-docker

Вот инструкции, которые я использовал для настройки БД:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
CREATE EXTENSION postgis; 
CREATE EXTENSION postgis_topology;
CREATE TABLE "public"."table" (
    "id" BIGSERIAL NOT NULL PRIMARY KEY,
    "id_s" int8 NOT NULL,
    "id_g" int8,
    "datetime" TIMESTAMPTZ DEFAULT now(),
    [...]
);
SELECT create_hypertable('table', 'datetime');
ALTER TABLE table ADD CONSTRAINT id_pkey PRIMARY KEY (id, datetime);
CREATE INDEX ON table (id_s, datetime DESC);
CREATE INDEX ON table (id_g, datetime DESC);
ALTER TABLE table ADD COLUMN geom geometry(POINT,2192)

0 ответов

Другие вопросы по тегам