ablog

不器用で落着きのない技術者のメモ

PostgreSQL で QPS を確認する

PostgreSQL で QPS(Queries per second) を確認したい場合、イコールではないが以下で TPS(Transactions per second) を確認することができる。

SELECT sum(xact_commit+xact_rollback) FROM pg_stat_database;

RDS PostgreSQL や Aurora PostgreSQL だと、Performance Insights のカウンターメトリクスで xact_commit や xact_rollback を確認することができる。以下は pgbench で参照ワークロードを流した際の Aurora PostgreSQL の Performance Insights のスクリーンショット

$ pgbench -Sn -c 32 -j 32 -t 10000 -U awsuser -h <ホスト名> -d mydb -p 9999 >/dev/null 2>&1

f:id:yohei-a:20201125103146p:plain

検証結果

  • pgbench で参照ワークロードを実行する。
$  pgbench -Sn -c 40 -j 40 -t 100000 -U awsuser -h reader-a-1.******.ap-northeast-1.rds.amazonaws.com -d writer -p 5432 >pgbench`date -d "-$i days" '+%Y-%m-%d-%H%M%S'`.log 2>&1
$ tail -11  pgbench2020-11-26-034125.log
pghost: reader-a-1.******.ap-northeast-1.rds.amazonaws.com pgport: 5432 nclients: 40 nxacts: 100000 dbName: writer
transaction type: <builtin: select only>
scaling factor: 100
query mode: simple
number of clients: 40
number of threads: 40
number of transactions per client: 100000
number of transactions actually processed: 4000000/4000000
latency average = 2.339 ms
tps = 17099.442370 (including connections establishing)
tps = 17104.206044 (excluding connections establishing) ★ 約17,000 tps(Readクエリのみのため、QPSと同等と考えられる)
  • Performance Insights のカウンターメトリクスの xact_commit を確認すると約17,000 tps となっている。

f:id:yohei-a:20201125130111p:plain