我正在针对 PostgreSQL 运行一些性能测试,以测试数据库服务器在 VSI 上运行以及在工作节点上的 Kubernetes 上运行时的性能。我使用 PgBench 来运行这些测试。
我的数据库(在生产中配置在集群中)有很大的工作负载,所以我在 VSI(在 IBM Cloud 上)上测试了 64 个 vCPU 双处理器 2.3 GHz 32 核和 128 Gb RAM,磁盘 2Tb 每 Gb 5IOPS。
然后我在 Kubernetes (IBM Cloud) 上使用 48 个 vCPU、192 Gb RAM、磁盘 2 Tb 5 IOPS/Gb 的工作节点对其进行了测试。
问题是 Kubernetes 的性能比 VSI 差 50%,我没想到会有这么多差异。所以我试图了解什么可能是瓶颈。
测试中的磁盘相似,吞吐量相似,因此磁盘不能成为瓶颈
我使用了一项服务来访问配置为 Network Load Balancer 的 Pod(之前是 Application Load Balancer,性能更差)。但是,我还使用 Pod 到 Pod 通信进行了测试,将 PgBench 部署在绕过服务的另一个工作节点上。但没有发现任何改进。所以我认为这应该排除问题是负载均衡器。
我想为 PostgreSQL Pod 保留更多的 CPU 和 RAM,添加类似这样的内容。
resources: requests: memory: 128Gi cpu: 32 limits: memory: 128Gi cpu: 32
在这一点上,我不知道我可以做些什么来提高性能。有什么建议吗?Kubernetes 增加所有这些开销是否正常?