zubkov-andrei / pg_profile

Postgres historic workload reports
Other
212 stars 31 forks source link

Длительное выполнение take_sample() #59

Closed triwada closed 1 year ago

triwada commented 1 year ago

Добрый день, имеется проблема с периодическим длительным выполнением take_sample()

postgres=# \dx pg_profile
                              List of installed extensions
    Name    | Version | Schema  |                      Description
------------+---------+---------+-------------------------------------------------------
 pg_profile | 0.3.6   | profile | PostgreSQL load profile repository and report builder
(1 row)

Статистика создания снимка на мастере

postgres=# select * from profile.sample_timings where sample_id = 1081 and server_id=2 order by time_spent desc limit 5 ;
 server_id | sample_id |          event          | time_spent
-----------+-----------+-------------------------+-------------
         2 |      1081 | total                   | 00:05:26.67
         2 |      1081 | delete obsolete samples | 00:04:42.72
         2 |      1081 | collect object stats    | 00:00:29.75
         2 |      1081 | maintain repository     | 00:00:07.53
         2 |      1081 | calculate object stats  | 00:00:05.26
(5 rows)

Time: 0.662 ms

Статистика создания снимка на синхронной реплике

postgres=# select * from profile.sample_timings where sample_id = 1064 and server_id=3 order by time_spent desc limit 5
;
 server_id | sample_id |              event               | time_spent
-----------+-----------+----------------------------------+-------------
         3 |      1064 | total                            | 00:17:23.4
         3 |      1064 | collect tablespace stats         | 00:11:47.59
         3 |      1064 | delete obsolete samples          | 00:04:56.15
         3 |      1064 | collect object stats             | 00:00:27.65
         3 |      1064 | db:aiszags collect indexes stats | 00:00:14.22
(5 rows)

Time: 0.729 ms

На четырёх асинхронных репликах время выполнения в пределах 2 минут.

Странным выглядит слишком долгий collect tablespace stats. В чём может быть причина такой разницы во времени?

zubkov-andrei commented 1 year ago

Добрый день! А нет ли возможности обновиться до последней версии?

triwada commented 1 year ago

какая версия pg_profile поддерживает работу с версией PostgreSQL 11 (обновление самого PostgreSQL пока только планируется)?

Из описания поддержки версионности непонятно, какую версию использовать с PostgreSQL 11

PostgreSQL

    15 supported since version 4.1
    14 supported since version 0.3.4
    13 supported since version 0.1.3
    12 supported since version 0.1.0
zubkov-andrei commented 1 year ago

pg_profile не сбрасывает поддержку старых версий. Во всяком случае не должен. Последняя версия pg_profile во всяком случае должна поддерживать всё поддерживаемые версии Postgres (11 тоже). Если вдруг это не так, это баг и его надо будет исправлять. Поддержка EOL версий не гарантирована. На 9.6, например, я его уже не проверяю.

triwada commented 1 year ago

распаковал архив расширения версии 4.1. При попытке обновления возникает ошибк

alter extension pg_profile update; ERROR: extenstion "pg_profile" has no update path from version "0.3.6" to version "4.1"

triwada commented 1 year ago

предыдущая проблема решилась тем, что нужно было скопировать ещё файлы версии 4.0. Обновление до версии 4.1 выполнено, теперь нужно будет понаблюдать в течение недели, возникнут ли подобные проблемы уже с новой версией

zubkov-andrei commented 1 year ago

Да, я в каждый релиз запаковываю только обновление с предыдущей версии чтобы поменьше архив был. Так что через версию напрямую не обновиться, качать приходится всё.

triwada commented 1 year ago

возможно, стоит добавить этот нюанс в документацию

triwada commented 1 year ago

после обновления до 4.1 проблема с длительным выполнением на реплике не наблюдается