我建议您熟悉Alexei Lesovsky对2019年初报告的解码-“使用pgCenter对Postgres进行故障排除”
使用Postgres时常会出现问题,发现和解决问题的来源越快,用户就越感激。pgCenter是一组CLI实用程序,它是一个强大的工具,可用于在此处和现在识别和修复问题。在这份报告中,我将告诉您如何有效地使用pgCenter查找和解决问题,在哪些区域进行搜索以及如何对某些问题做出响应,特别是如何:
- 使用Postgres检查一切是否正常;
- 快速找到不良客户并消除他们;
- 确定大量要求;
- 和pgCenter的其他有用技巧。

, . Data Egret. . , PostgreSQL.
, pgCenter , .

. . Linux, , . - Postgres'. Postgres . PostgreSQL DBA. , Postgres . .

. : Slack, Telegram. - . .

, , Linix. . , Linux . , , .

, Postgres. Postgres. - Postgres'. Postgres. Postgres.

Postgres . Postgres Postgres. , Postgres (views), .
. . . - .

- , , , , , . - . : « ?», « ?» « ?». , .

, , , , . - pgCenter.
. , TOP- .
- , C . .. . Golang, , . .
Go pgCenter . . , , , targz, deb- rpm- . .. - , make, GCC Golang. , , .

pgCenter , top- ( ).

. , . wait_events. , -.

PSQL. Postgres, PSQL Postgres. pgCenter , «pgcenter top» postgres - (-, ).

, - , , , , PSQL, , , .

, UNIX-, . . go' , pgCenter , UNIX.

, libpq. , , pg_stat_statements pgCenter , . .

(pgcenter top). , , . , - . , , . . , pgCenter, top-, .

– . .

– , Postgres. - , Postgres .

– (views). stat-, Postgres, .

, . -, . . , , , , . .
, . (regexp). . , , - : .

, pgCenter. – - .

, USE . . - , .

. . , Top, . : , ..

, : , , .

, , swap. swap, , swap. – .

- : « - ?». . , .

, – - Postgres. uptime. , uptime Postgres – , , . , Postgres .

. , Postgres, . , , . . . .

, , . , , . , . , . - .

, Postgres MVCC . MVCC . , . .

'd'.
, pg_stat_database , «rollbacks». «ROLLBACK», /. (constraints), . . , .
pg_stat_database (conflicts) (deadlocks). , , , - .

, pgCenter. , . -, :
top
vmstat
iostat
nicstat
pg_stat_activity
pg_stat_statements
, .

, , - .

. , , . . . CPU usage – 85 %. , - . , . , Postgres. Postgres , .

, , 38 , - . state: waiting idle_xact. Waiting 0, . . . , 20 idle . , (xact_age) – . , . – 15 . , .

(: pg_stat_statements. pg_stat_statements "x", . "shift + x" pg_stat_statements_timings. "pg_stat_statements not available on this database", pg_stat_statements postgres postgres: create extension pg_stat_statements;
)
, () . , . pg_stat_statements. contrib. : , . contrib , . , -. Postgres – pg_stat_statements.
, . , . . , CPU pg_stat_statements. – 2 . SELECT COUNT (*) FROM "game_competition_events"
. . . , , , , . , - , , -. , .
. total_time. total_time , , /: . , «t_cpu_t». . .

, . , , «cpu_t», , , . snapshot , , . . SELECT "courses_logs".* FROM course_logs
. , 5 . , , , , .
«calls», , . . . . .

, . Top pg_stat_activity pg_stat_statements. pgCenter .

– -. , , , -.

. , - – 27 %. , -.

, «background worker». , .

«wait_event». , -. . . .

-. 'B' iostat. . , 99 %. – , NVME. , latency.

latency, latency 1 . .
, . , SSD NVME- - , , latency. latency, , - .

, -. pg_stat_statements , -. «t_read_t», . . , .
. «read_t». , -, .
/ track_io_timing.
, , . pgCenter queryid. . , pg_stat_statements. . . . . pgCenter . queryid. pgCenter .

:
– summary, , pg_stat_statements. , , -.
, , summary. .
, , .
, , .

, , , top, iostat pg_stat_activity, pg_stat_statements. , .

– , -. Postgres , .
:
Checkpointer pocess.
WAL writer process.
Autovacuum workers.
Background workers.
pgCenter , , .

, : - , . , , .

, , . - .

.

. , , 22 21 . , - .

wait_event , , . . . - - , , .

, (idle in transaction). , 6 . .

, , 10- , . , , 7 . 10- .

wait_etype, wait_event , , , (Client:Client Read). , - , - . , , - , , . , , .
– . : pg_cancel_backend pg_terminate_backend. , backend. pgCenter . backend pid, .

:
Pg_stat_activity.
Pg_stat_statements.
Pg_cancel_backend ().
Pg_terminate_backend ().

, . , , .
. , . - . , ( , , ). - , , idle transaction . — .

– . , (deadlocks) .

. ALTER TABLE, , , . . , , 11- . Postgres, . ALTER .

– CREATE INDEX CONCURRENTLY, - , , . .

, .. , production Postgres , .

pg_stat_replication. , Postgres, .
pgCenter pg_stat_replication. , , .
5 . .

, , . 2 walreceiver, . . 2 .

, , , . , , - . , , – - .
, pg_stat_replication , . 1,5 GB. replay_lag – 2 . . . 2- . 2 , . . .

, , 2 pg_basebackup 1 pg_receivewal. Pg_basebackup – . pg_stat_replication. pg_receivewal – , . . . , , . - , .

pg_stat_replication . . , 5 . : pending, write, flush, replay, total_lag. . . .
Pending – , . .
Write – , , . . .
Flush – , .
Replay – . .
Total_lag – .
, , , - , . , ; , ; , , .

, . . , , .

– , . . – , . Postgres, . , - .

:
pg_stat_replication.
pg_wal_lsn_diff().
pg_current_wal_lsn().
pg_last_commited_xact().

, .

, top . – Seq Scan, update, delete, insert, .

. . .

. , , . , .

, , pg_stat_progress_vacuum 9.6. , , , , , . pg_stat_progress_vacuum – . , . , , , . , .

, . , , . . postgresql.conf, - reload. , , .
. , , . . , .
psql, . . psql , pgCenter. - , pgCenter, psql .

top- – , pgCenter. top , pgCenter. record report.
, . . report , , Top. — .

-. - , record. . .

wait_event’, , .

: SELECT . , , , 44 % , - , – - , .

: VACUUM FULL. , VACUUM FULL IO , 12 %. , , .
! . . . , , pg_stat_statements, query . - - ?
, . , , , , - , . , , - . . - . . . , , -. , , . , , .
. , rollbacks. rollbacks, rollbacks, .
, , , pg_stat_database . rollbacks .
pg_stat_statements rollbacks, .
, . . `SELECT FROM pg_stat_database JNOIN pg_stat_statements` pg_stat_statements, rollbacks , . . , 10-20 .
, ! Postgres ?
9.0-9.1, C . - , , , , . Go , 9.4. 9.4 , SELECT… where filter. . (9.3) . . , , . , , , , .
, ! , TOP. .
, , . , – . less ( ), – , .
. TOP ?
. , , , . , . , . , , .
! . , . , 85% CPU usage, , . pg_stat_statements. . , .
. CPU . – t_all_t. pg_stat_statements. , . , . t . . . «t». . . . , .
. , pg_stat_statements, ?
pg_stat_statements real time.
, pg_stat_statements , 85 CPU usage – .
, . , pg_stat_statements . , , , 10 , . 10 – , , , atop. atop ?
, . pg_stat_statements, CPU, , , pg_stat_statements.
. , Grafana, . . . pgCenter – , , , , .
. pgCenter atop , Grafana?
pgCenter report pgCenter record, . . . , , . . ., , pgCenter report , , pg_stat_database sar . . atop, .
, ! , Postgres, , , . , . ? ?
10 . «-f», . , , , 10 . , pg_stat_activity , . . , . , , 50 . , , 1-2 %. . . , , - 0,5-2 % .
. , - .
, . , , 0,04 % . , , . - .
.
, .
, ! . wait_event Running – ?
.
CPU.
, . . . , wait_events PID , , backend - , , - . Running, , . . .
CPU?
, CPU, . . - . .
! ! - , , Ubuntu?
C, . , , . PDGD Ubuntu. Launchpad , - . . , . Go -, dev-. . , travis-ci build, build . . . Realeses, . wget, , tar’ , .
Goreleaser, . .
, GO . , . , SOLID. , , Goreleaser , , , . C’ , . , Realeses. !
Updated. Goreleaser , !
, queryid. queryid. , . ?
, . , - . , . - . . . , . . . . , , .
, , queryid – .
是的,最初列宽跳了起来,这很烦人。我在开发分支中修复了它,但是在主分支中还没有。我想在2月中旬发布Event Profiler。而且只是固定的列宽。
大。
是的,您可以通过箭头调整宽度。
谢谢阿列克谢!
非常感谢你!
视频: