PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Heroku Postgres DB nach dem Upgrade langsamer

Ich habe das schon einmal bei einem Kunden gesehen, der mich wegen Nothilfe angerufen hat.

Nachdem Sie mit heroku bash herumgestöbert haben Wir kamen schließlich zu dem Schluss, dass sich die neue Instanz auf einem besonders ausgelasteten zugrunde liegenden Server befand. Wir haben ein Failover per Follower-Promotion auf eine andere Maschine durchgeführt, an diesem Punkt verbesserte sich die Leistung erheblich – obwohl das Failover selbst aufgrund der Probleme mit dem Master eine Herausforderung darstellte.

Soweit ich weiß, sind Herokus Instanzen Amazon EC2-Knoten (Xen-VMs), die einen LXC-Container ausführen, um die Datenbankcluster jedes Heroku-Benutzers zu isolieren. LXC bietet eher weniger Isolation als eine vollständige VM; Instanzen können um RAM, Festplatten-E/A, CPU usw. konkurrieren, abhängig von der genauen Richtlinie, die mit OpenCZ konfiguriert ist, allen Kontrollgruppenrichtlinien usw.

Wenn Sie sich auf einer Instanz befinden, in der die anderen Benutzer nicht viel tun, und wenn der Container Ihrer Datenbank erlaubt, Ressourcen zu verwenden, die derzeit nicht von anderen Benutzern benötigt werden, können Sie leicht eine stetig höhere als die garantierte Leistung feststellen.

Ich vermute, dass Personen mit größeren Heroku-Plänen eher die Ressourcen des Systems verwenden, mit dem Sie einen Container teilen.

Wenn Sie ein Promotion-Failover zu einer größeren Instanz durchführen, in der alle Benutzer dort sind, weil sie wirklich die von der größeren Maschine angebotenen Ressourcen benötigen, könnten Sie tatsächlich weniger erhalten Ressourcen insgesamt, weil jeder tatsächlich seine Anteile verwendet.

Es ist frustrierend, dass Heroku so wenig Einblick in die Systeme bietet, auf denen ihre DBs laufen. Es ist schwer zu sagen, wie/ob sie Lasten zwischen Container-Hosts verteilen, wie hoch die zugrunde liegende Last auf dem System ist usw.

In einem Kommentar wies @Forrest darauf hin, dass Heroku ein nützliches Feature habe Seite mit ihren Serverdetails , was zeigt, dass nur die unteren Ebenen mandantenfähig sind, die höheren Ebenen jedoch nicht. Dies würde den hier beobachteten Leistungsverlust leicht erklären und würde zu meinen obigen Kommentaren passen, dass der niedrigere Plan Forrest erlaubte, ungenutzte Ressourcen von anderen Benutzern zu leihen.