2013-07-15 50 views
3

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

我们较小的数据库运行大约5毫秒的响应时间。转移后新的数据库跳到了大约10ms(冷藏)。此后在10ms和20ms之间波动。

  • 新的数据库运行完全相同的版本(9.2.4)。
  • 我注意到有更多的日志发生(检查点)。
  • 来自旧数据库的db缓存命中/未命中是〜0.91,因此是更新。新的数据库已经达到了相似的命中率,所以我期望缓存的温暖不再是问题。

是否有一些配置可能不同?我知道每个应用程序都是不同的,但缓存现在不应该升温吗? Kappa & Ronin之间是否有任何未公开的区别?

感谢

+0

是否有可能扩展或类似的配置不会传输? – Forrest

+0

@CraigRinger谢谢你的提示。如果heroku没有回应明天有用的东西,我会试试这个。你为什么不把它作为答案提交,所以如果成功我可以接受。 – Forrest

回答

3

我与客户谁给我打电话了一些紧急求助见过这个。

在与heroku bash进行了一番讨论后,我们最终得出结论:新实例位于特别繁忙的底层服务器上。我们通过追随者升级到另一台机器进行故障转移,此时性能大大提高 - 尽管故障转移由于主机问题而具有挑战性。

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

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

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

如果你做一个促销故障转移到更大的实例,其中所有的用户都没有,因为他们确实需要通过更大的机器提供你实际上可以得到全面资源的资源,因为每个人的实际使用他们的股份。

Heroku对运行其DB的系统提供如此小的可见性令人沮丧。很难说出它们在容器主机之间的负载平衡方式,系统的底层负载如何等等。

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

+0

这是问题所在。看起来我们的kappa服务器伙伴并没有太多使用它,而且我们在Ronin服务器上看到很多“窃取”的东西。在Ika计划之前,我们不会获得这种CPU性能。 https://devcenter.heroku.com/articles/heroku-postgres-production-tier-technical-characterization – Forrest

+0

还应该指出,即使是新的Ronin服务器的表现也比我们原来的Kappa慢。如果其他人正在考虑从kappa升级,请确保您的性能真正恶化,因为您可能会丢失CPU。 – Forrest

+0

@Forrest这是一个非常有用的文章,你链接到。谢谢。我不知道只有较低端的Heroku实例使用openvz的多租户主机;这解释了我过去见过的很多异常行为。 –

0

我们刚刚迁移并注意到同样缓慢。然而,我没有得到支持的正式答案。我的用户抱怨,我现在对Heroku很失望。

+0

我们确实发现重新配置有助于缓解问题。可能值得一试。祝你好运! – Forrest