Имя: Пароль:
1C
 
как замедлить 1С через postgres?
0 abask
 
09.12.25
23:06
Есть странная задача замедлить одну базу в кластере 1С

Есть кластер 1С с несколькими базами, хранятся на Postgres.
Сервер postgres - это отдельная машина с nvme, репликами, блэкджеком и т.д. Все работает достаточно быстро и стабильно.

По условиям задачи нужно базу оставить в том же кластере 1С. Для хранения развернуть для нее отдельный инстанс Postgres на том же postgres сервере, где и другие. При этом настроить postgres так, чтобы стало заметно, что тормозит.

ask.postgrespro.ru предложил такие параметры:

shared_buffers = 16MB
work_mem = 1MB
maintenance_work_mem = 32MB
max_parallel_workers_per_gather = 0
max_parallel_workers = 0
max_parallel_maintenance_workers = 0
max_wal_size = 100MB
min_wal_size = 80MB
checkpoint_timeout = 30min
checkpoint_completion_target = 0.5
synchronous_commit = on
fsync = on
full_page_writes = on
aqo.enabled = off
jit = off
max_connections = 10
plan_cache_mode = force_generic_plan

не помогло, база работает довольно шустро, тормозов нет

База УТ, размером около 12 Гб

вопрос: может у кого-нибудь есть мысли, как настройками postgres можно сделать тормоза?
1 PR
 
09.12.25
23:08
(0) Зачем?
2 bolder
 
09.12.25
23:15
(0) Перенеси базу на медленный диск.
3 abask
 
09.12.25
23:16
(1) так получилось
(2) там только nvme
4 bolder
 
09.12.25
23:19
(3) и бэкапы тоже храните на nvme?
5 H A D G E H O G s
 
09.12.25
23:21
В нормальных СУБД это делается так

select 'ALTER INDEX [' + I.name + '] ON [' + T.name + '] DISABLE'
from sys.indexes I
inner join sys.tables T on I.object_id = T.object_id
where I.type_desc = 'NONCLUSTERED'
and I.name is not null
6 abask
 
09.12.25
23:23
(4) только одну копию, далее все сливается в другой ДЦ с необходимой глубиной, в нашем случае это не поможет.
7 Asmody
 
09.12.25
23:25
(0) [настроить postgres так, чтобы стало заметно, что тормозит] - я бы послал матом.
8 H A D G E H O G s
 
09.12.25
23:26
отключите nestloop. 1С любит их.

SET enable_nestloop = off
9 bolder
 
09.12.25
23:27
(6) ну тогда только какие то процедуры на выборку вешать.
10 abask
 
09.12.25
23:28
(5) мысль интересная, для postgres можно так
DROP INDEX index_name;
CREATE INDEX index_name ON table_name (column);
11 abask
 
09.12.25
23:28
(8) (9) спасибо, пошел гуглить
12 Asmody
 
09.12.25
23:35
запихни один инстанс postgres в докер и ограничь ему количество cpus (можно даже меньше 1) и memory 640k
13 Asmody
 
09.12.25
23:37
без докера через systemd тоже можно подрезать крылышки, но я не помню как
14 PR
 
09.12.25
23:37
(3) Что значит так получилось?
15 abask
 
09.12.25
23:37
(13) через nice уже подрезал
16 Asmody
 
09.12.25
23:44
(15) nice вроде только приоритет меняет. он не ограничивает ресурсы.
вот https://fastfox.pro/blog/tutorials/systemd-limits-memory-cpu/

оставь процессу 1% CPU и 640k memory и пусть попробует взлететь