Postgresql 性能似乎受到限制,无法找出原因

Postgresql 性能似乎受到限制,无法找出原因

我正在 ubuntu 20.04 虚拟机上设置一个新的 PG13 集群。通过 pgbench 看到的性能不好也不坏。我试图找出它为什么是这个水平,而不是更高,方法是尝试找到它被限制的地方。

通过运行 pgbench,我以为我会看到一个明显的瓶颈:

  • CPU 方面。然而 htop 显示没有一个核心完全达到最大负荷。在 4 核机器上,负载约为 2 或小于 2。
  • 在磁盘中。运行其他基准测试时,我可以看到磁盘的运行速度比 pgbench 下快得多。这些数字是合理的。将磁盘速度(iSCSI)加倍没有区别。
  • 在网络中。但 iftop 显示所有数字都是合理的。直接通过本地套接字而不是 TCP 确实可以加快速度(大约两倍 tps)。但此时的瓶颈是仍然不是 CPU 或磁盘。

顶部 iotop

上面显示了通过 127.0.0.1 进行的实验(以确保网络堆栈参与其中)。Iotop(如果我理解正确的话)显示,进程在 IO 上阻塞的时间不到 1%。

默认的 pgbench 参数,但有 30 个客户端:

pgbench -h 127.0.0.1 -U myuser mydb -T 50 -c 30

但它们都在更新语句期间被阻止 - 等待。我这里是否遗漏了一些明显的东西?我可以运行哪些其他工具来更好地了解该问题?

编辑以添加后续的 pgbench 输出

nik@pgdb2:~$ sudo -u postgres pgbench -s 100 -h pgdb1 -p 5433 -c 30 -T 5 -j 2
Password:
scale option ignored, using count from pgbench_branches table (100)
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 100
query mode: simple
number of clients: 30
number of threads: 2
duration: 5 s
number of transactions actually processed: 9814
latency average = 15.372 ms
tps = 1951.612278 (including connections establishing)
tps = 1955.965884 (excluding connections establishing)

答案1

您是否调整过 PostgreSQL 配置?

默认情况下,Postgres针对广泛兼容性而非性能进行调整

上面链接的 Wiki 页面是一个很好的入门资源,此工具,还有维基上其他资源的完整列表

也有很好的资源来自教育局佩科纳他们是 PostgreSQL 商业部署领域的两位大人物。

相关内容