gpt4 book ai didi

postgresql - 升级后 Heroku Postgres DB 变慢

转载 作者:行者123 更新时间:2023-11-29 11:34:32 25 4
gpt4 key购买 nike

2 天前,我将我们的 Heroku Postgres 服务器从 Kappa 升级到 Ronin。我们的数据库高达几 GB,我认为额外的 ram 有助于缓存。我使用了标准的快速交换技术(创建追随者、允许转移、提升追随者)。我知道缓存可能需要一些时间才能预热,但已经好几天了,它一直在变慢。

我们较小的数据库运行大约 5 毫秒的响应时间。新数据库在传输(冷缓存)后跳到大约 10 毫秒。此后,它在 10 毫秒到 20 毫秒之间波动。

  • 新数据库运行的是完全相同的版本 (9.2.4)。
  • 我注意到发生了更多日志记录(检查点)。
  • 旧数据库的数据库缓存命中/未命中约为 0.91,因此进行了更新。新数据库已经达到类似的命中率/未命中率,因此我希望缓存的温度不再是问题。

是否有一些可能不同的配置?我知道每个应用程序都不一样,但缓存现在不应该已经预热了吗? Kappa 和 Ronin 之间是否存在任何未记录的差异?

谢谢

最佳答案

我以前见过一个客户调用我寻求紧急帮助。

在对 heroku bash 进行了一些探索之后,我们最终得出结论,新实例位于特别繁忙的底层服务器上。我们通过跟随者提升到另一台机器进行了故障转移,此时性能大大提高——尽管由于主机的问题,故障转移本身具有挑战性。

据我所知,Heroku 的实例是运行 LXC 容器以隔离每个 Heroku 用户的数据库集群的 Amazon EC2 节点(Xen VM)。 LXC 提供的隔离比完整的 VM 少得多;实例可以争用 RAM、磁盘 I/O、CPU 等,具体取决于使用 OpenCZ 配置的确切策略、任何控制组策略等。

如果您在其他用户没有做太多事情的实例上,并且如果容器允许您的数据库使用其他用户当前不需要的资源,您可以很容易地看到稳定高于保证的性能。

我怀疑使用更大的 heroku 计划的人实际上更有可能使用与您共享容器的系统的资源。

如果您将升级故障转移到一个更大的实例,其中所有用户都在那里,因为他们确实需要更大机器提供的资源,您实际上可以获得总体上更少的资源,因为每个人实际上都在使用他们的资源股份。

令人沮丧的是,Heroku 对运行其数据库的系统的可见性如此之低。很难说出它们如何/是否在容器主机之间进行负载平衡,系统上的底层负载是什么,等等。

在评论中,@Forrest pointed out that Heroku have a useful page on their server details ,表明只有较低层是 Multi-Tenancy 的,而较高层不是。这很容易解释此处观察到的性能损失,并且符合我上面的评论,即较低的计划允许 Forrest 从其他用户那里借用未使用的资源。

关于postgresql - 升级后 Heroku Postgres DB 变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17661417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com