Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Скорость восстановления данных со временем заметно замедляется / 25 сообщений из 80, страница 1 из 4
10.03.2016, 15:01
    #39189148
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Всем доброе время суток. Пробую смигрировать БД с 32 на 64 битную платформу, есть при этом бэкап БД (весит 233 Гб).
С помощью следующего скрипта делаю рестор:
Код: sql
1.
D:/postgresql/bin\pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "asd_production" --no-password  --jobs 4 --verbose "D:\asd_production 2016-01-29 19-00-41.backup"


при этом на начальном этапе скорость космическая (диск SSD), за час восстановилось порядка 75 Гб, и после этого включаются резкие тормоза, за следующий час скорость восстановления - 3 Гб!! Это катастрофа, куда смотреть, что можно подправить? Конфиг прилагаю.
...
Рейтинг: 0 / 0
10.03.2016, 15:04
    #39189153
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Вот такая нагрузка на сервере.
...
Рейтинг: 0 / 0
10.03.2016, 15:16
    #39189171
ursido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffua,

Выдержки из приложенного файла:
Код: sql
1.
2.
3.
4.
5.
6.
7.
shared_buffers = 1GB
work_mem = 64MB
maintenance_work_mem = 512MB
fsync = off
effective_cache_size = 12024MB
autovacuum = off
autovacuum_max_workers = 1
...
Рейтинг: 0 / 0
10.03.2016, 15:27
    #39189188
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
ursidoSheriffua,

Выдержки из приложенного файла:
Код: sql
1.
2.
3.
4.
5.
6.
7.
shared_buffers = 1GB
work_mem = 64MB
maintenance_work_mem = 512MB
fsync = off
effective_cache_size = 12024MB
autovacuum = off
autovacuum_max_workers = 1



И что из этого следует?
Код: sql
1.
2.
fsync = off
autovacuum = off


специально отключил взял здесь
...
Рейтинг: 0 / 0
10.03.2016, 15:48
    #39189211
ursido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
SheriffuaИ что из этого следует?


Я заранее согласен с товарищем qwwq.
...
Рейтинг: 0 / 0
10.03.2016, 16:00
    #39189224
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
ursidoSheriffuaИ что из этого следует?


Я заранее согласен с товарищем qwwq.тс же пояснил, что это разовое послабление на момент загрузки. В случае фейла просто всё сносится, кластер заново инициируется и заливается по новой.


а вот на живой базе -- это заход на дарвиновскую -- недавно кого-то максим колол -- обсыпались файлики напрочь при отключённом fsync.


я думаю майнтейнанс_ворк_мем вам бы добавить, например.
думаю, база индексированием могла заняться тут то и просела в "дисковом приращении".
но я ни разу не админ. подождем спецов.
...
Рейтинг: 0 / 0
10.03.2016, 16:08
    #39189236
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
PS посмотрите

Код: sql
1.
SELECT * FROM pg_stat_activity WHERE state<>'idle' order by xact_start 



чем там базёнка в это время занимается
оно и прояснеет.
...
Рейтинг: 0 / 0
10.03.2016, 16:10
    #39189239
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
qwwqursidoпропущено...


Я заранее согласен с товарищем qwwq.тс же пояснил, что это разовое послабление на момент загрузки. В случае фейла просто всё сносится, кластер заново инициируется и заливается по новой.


а вот на живой базе -- это заход на дарвиновскую -- недавно кого-то максим колол -- обсыпались файлики напрочь при отключённом fsync.


я думаю майнтейнанс_ворк_мем вам бы добавить, например.
думаю, база индексированием могла заняться тут то и просела в "дисковом приращении".
но я ни разу не админ. подождем спецов.

Вы правы, это разовое послабление на момент рестора.
Может есть еще доп.рекомендации, т.к. когда рестор того же бэкапа делался, НО на 32 битную платформу, время восстановления было 10 часов, пробовал использовать этот конфиг, чуда не произошло, теже тормоза ((
...
Рейтинг: 0 / 0
10.03.2016, 16:16
    #39189251
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
qwwqPS посмотрите

Код: sql
1.
SELECT * FROM pg_stat_activity WHERE state<>'idle' order by xact_start 



чем там базёнка в это время занимается
оно и прояснеет.

Результат в файле
...
Рейтинг: 0 / 0
10.03.2016, 16:19
    #39189258
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffua,

Нужно понять где затык.
А что выдаст такой запрос?Желательно запустить в `psql` с ключём `\x` (для построчного вывода колонок):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
WITH bgstats AS (
  SELECT checkpoints_timed,
         checkpoints_req,
         checkpoints_timed + checkpoints_req checkpoints,
         checkpoint_sync_time,
         checkpoint_write_time,
         buffers_checkpoint,
         buffers_clean,
         maxwritten_clean,
         buffers_backend,
         buffers_backend_fsync,
         buffers_alloc,
         buffers_checkpoint + buffers_clean + buffers_backend total_buffers,
         pg_postmaster_start_time() startup,
         stats_reset,
         round(extract('epoch' from now() - stats_reset)/60)::numeric min_since_reset,
         --round(extract('epoch' from age(now(), current_date))/60)::numeric min_since_reset,
         delay.setting::numeric bgwriter_delay,
         lru.setting::numeric bgwriter_lru_maxpages,
         ratio.setting::numeric bgwriter_lru_multiplier
    FROM pg_stat_bgwriter
    JOIN pg_settings lru   ON lru.name = 'bgwriter_lru_maxpages'
    JOIN pg_settings delay ON delay.name = 'bgwriter_delay'
    JOIN pg_settings ratio ON ratio.name = 'bgwriter_lru_multiplier'
)
SELECT round(100.0*checkpoints_req/checkpoints,1)                 forced_ratio,
       round(min_since_reset/checkpoints,2)                       min_between,
       round(checkpoint_write_time::numeric/(checkpoints*1000),2) write_time_avg,
       round(checkpoint_sync_time::numeric/(checkpoints*1000),2)  sync_time_avg,
       round(total_buffers/128.0,1)                               mb_total,
       round(buffers_checkpoint/(128.0*checkpoints),2)            mb_per_ckpt,
       round(buffers_checkpoint/(128.0*min_since_reset*60),2)     mbps_ckpt,
       round(buffers_clean/(128.0*min_since_reset*60),2)          mbps_bgw,
       round(buffers_backend/(128.0*min_since_reset*60),2)        mbps_sess,
       round(total_buffers/(128.0*min_since_reset*60),2)          mbps_total,
       round(100.0*buffers_checkpoint/total_buffers,1)            pct_ckpt,
       round(100.0*buffers_clean/total_buffers,1)                 pct_bgw,
       round(100.0*buffers_backend/total_buffers,1)               pct_sess,
       round(100.0*maxwritten_clean/(min_since_reset*60000/bgwriter_delay),2) bgw_halt_only_len,
       round(100.0*maxwritten_clean/(nullif(buffers_clean,0)/bgwriter_lru_maxpages),2)  bgw_halt_ratio,
       round(1.0*buffers_alloc/total_buffers,3)                   new_ratio,
       now()-pg_postmaster_start_time()                           uptime,
       *
  FROM bgstats;



Также надо бы bgwriter поболее выкрутить:namesettingbgwriter_delay100bgwriter_lru_maxpages1000bgwriter_lru_multiplier5
...
Рейтинг: 0 / 0
10.03.2016, 16:28
    #39189269
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
vyegorov,

Код: sql
1.
2.
3.
ERROR:  syntax error at or near ":"
LINE 1: ...ound(extract('epoch' from now() - stats_reset)/60):numeric m...
                                                             ^



у меня версия БД 9.3
...
Рейтинг: 0 / 0
10.03.2016, 16:30
    #39189274
ursido
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Странно.
Тогда почему для разового действия не выкручены другие параметры.
Например, мне кажется, что
max_connections можно выставить в 20
shared_buffers можно выставить в 4 GB (1/4 от имеющейся)
max_prepared_transactions выставить в 0
work_mem можно выставить в 256MB

Что-нибудь подумать над checkpoint_segments / checkpoint_timeout (например выставить в 16 / 1h)
...
Рейтинг: 0 / 0
10.03.2016, 16:37
    #39189284
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffua,

ну вот -- там чорным по белому написано: делается в один поток

Код: sql
1.
COPY document (document_id, document_db_id, cause_id, cause_db_id, document_status, document_type, document, date, date_in_low, created, changed, deleted, doc_created, doc_changed, doc_blob, judge, judges, doctype_id, doctype_db_id, log_judge_assign) FROM stdin;



осталось выяснить, что такое этот document, созданы к моменту COPY по нему уже индексы да констрайнты или нет. а если созданы -- то сколько их.

в приведенной вами статье есть рекомендация вынести создание логики (констрентов) и тяжёлых индексов вынести в отдельный этап. Но тогда руками надо дамп пилить. а это лениво.
...
Рейтинг: 0 / 0
10.03.2016, 16:41
    #39189289
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffuavyegorov,

Код: sql
1.
2.
3.
ERROR:  syntax error at or near ":"
LINE 1: ...ound(extract('epoch' from now() - stats_reset)/60):numeric m...
                                                             ^



у меня версия БД 9.3похоже вы левым гуём пользуетесь.
на моей памяти какой--то левый гуй скрадывал повторный :: в кастах.
...
Рейтинг: 0 / 0
10.03.2016, 16:43
    #39189291
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
qwwq,

пока нет не индексов не констрейнтов.
...
Рейтинг: 0 / 0
10.03.2016, 16:59
    #39189301
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
vyegorov,

Результат запароса здесь:

-[ RECORD 1 ]-----------+---------------------------
forced_ratio | 46.4
min_between | 3.03
write_time_avg | 84.45
sync_time_avg | 1.86
mb_total | 629683.5
mb_per_ckpt | 167.62
mbps_ckpt | 0.92
mbps_bgw | 0.09
mbps_sess | 5.30
mbps_total | 6.31
pct_ckpt | 14.6
pct_bgw | 1.4
pct_sess | 84.0
bgw_halt_only_len | 1.54
bgw_halt_ratio | 66.18
new_ratio | 0.211
uptime | 03:32:15.49
checkpoints_timed | 294
checkpoints_req | 254
checkpoints | 548
checkpoint_sync_time | 1018687
checkpoint_write_time | 46277179
buffers_checkpoint | 11757214
buffers_clean | 1163867
maxwritten_clean | 7703
buffers_backend | 67678405
buffers_backend_fsync | 0
buffers_alloc | 16975930
total_buffers | 80599486
startup | 2016-03-10 12:24:58.233+02
stats_reset | 2016-03-09 12:15:07.109+02
min_since_reset | 1662
bgwriter_delay | 200
bgwriter_lru_maxpages | 100
bgwriter_lru_multiplier | 2
...
Рейтинг: 0 / 0
10.03.2016, 17:11
    #39189310
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
qwwq,

похоже что ключ:
Код: sql
1.
--jobs 4


не работает при команде COPY
...
Рейтинг: 0 / 0
10.03.2016, 17:17
    #39189314
Lonepsycho
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffua,

Скорее неработает с некоторыми форматами дампа, н.п. тар. Какой формат дампа у вас?
...
Рейтинг: 0 / 0
10.03.2016, 17:20
    #39189320
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Lonepsycho,

Дамп делался так: pg_dump.exe" --format=custom
...
Рейтинг: 0 / 0
10.03.2016, 17:41
    #39189337
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffuaqwwq,

похоже что ключ:
Код: sql
1.
--jobs 4


не работает при команде COPY

Ключ -j работает на уровне таблиц. Если у вас 1 таблица = 90% базы, то рекомендую запастись попкорном, ибо поток будет только один. Чтобы распараллелить таблицы такие, надо руками шаманить.

А в моём запросе вроде всё должно быть хорошо.
...
Рейтинг: 0 / 0
10.03.2016, 17:45
    #39189340
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffuaqwwq,


А в моём запросе вроде всё должно быть хорошо.

ваш запрос отработался - 18916616
...
Рейтинг: 0 / 0
10.03.2016, 18:16
    #39189370
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Sheriffua,

Агрессивный bgwriter, checkpoint_completion_target = 0.9, wal_buffers='16MB'.
Можно попробовать ещё shared_buffers уменьшить на время загрузки данных.

Можно ещё так сделать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
cat <<EOS >> /etc/sysctl.conf
vm.overcommit_memory = 2
vm.swappiness=0
vm.dirty_background_bytes=67108864
vm.dirty_bytes=134217728
EOS
sysctl -p
# Stop using Transparent Huge Pages (THP)
echo never > /sys/kernel/mm/transparent_hugepage/enabled


Но у вас 1 поток всего, так что...
...
Рейтинг: 0 / 0
10.03.2016, 18:17
    #39189372
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
vyegorov,

Брежу, привык на Linux-е работать.
...
Рейтинг: 0 / 0
10.03.2016, 18:31
    #39189385
Sheriffua
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
Если с потоковостью бороться не имеет смысла, то какие основные параметры влияют на время обработки данных при ресторе?
Так как в одних рекомендациях нужно увеличивать shared_buffers в других уменьшить.
...
Рейтинг: 0 / 0
10.03.2016, 19:01
    #39189411
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скорость восстановления данных со временем заметно замедляется
SheriffuaЕсли с потоковостью бороться не имеет смысла, то какие основные параметры влияют на время обработки данных при ресторе?
Рекомендации по загрузке данных для 9.3 здесь .

На время работы pg_restore установите:
archive_mode = off
max_wal_senders = 0
wal_level = minimal

Это позволит не писать в WAL работу COPY.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Скорость восстановления данных со временем заметно замедляется / 25 сообщений из 80, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]