sql >> Database >  >> RDS >> PostgreSQL

Heroku Postgres DB langzamer na upgrade

Ik heb dit eerder gezien bij een klant die me belde voor noodhulp.

Na wat rondneuzen met heroku bash we kwamen uiteindelijk tot de conclusie dat de nieuwe instantie zich op een bijzonder drukke onderliggende server bevond. We deden een failover via volgerpromotie naar een andere machine, waarna de prestaties aanzienlijk verbeterden - hoewel de failover zelf een uitdaging was vanwege de problemen met de master.

Voor zover ik weet zijn Heroku's instances Amazon EC2-nodes (Xen VM's) die een LXC-container draaien om de databaseclusters van elke Heroku-gebruiker te isoleren. LXC biedt iets minder isolatie dan een volledige VM; instanties kunnen strijden om RAM, schijf-I/O, CPU, enz., afhankelijk van het exacte beleid dat is geconfigureerd met OpenCZ, elk beleid voor stuurgroepen, enz.

Als u zich in een instantie bevindt waar de andere gebruikers niet veel doen en als de container uw DB toestaat om bronnen te gebruiken die momenteel niet door andere gebruikers worden vereist, kunt u gemakkelijk hogere dan gegarandeerde prestaties zien.

Ik vermoed dat mensen met grotere Heroku-plannen eerder de bronnen gebruiken van het systeem waarmee je een container deelt.

Als u een promotie-failover doet naar een grotere instantie waar alle gebruikers aanwezig zijn omdat ze de middelen van de grotere machine echt nodig hebben, kunt u in feite minder krijgen middelen in het algemeen, omdat iedereen zijn aandelen daadwerkelijk gebruikt.

Het is frustrerend dat Heroku zo weinig inzicht biedt in de systemen waarop hun databases draaien. Het is moeilijk te zeggen hoe/of ze de balans tussen containerhosts laden, wat de onderliggende belasting van het systeem is, enz.

In een reactie wees @Forrest erop dat Heroku een nuttig pagina op hun servergegevens , waaruit blijkt dat alleen de lagere lagen multi-tenant zijn, maar hogere lagen niet. Dit zou gemakkelijk het prestatieverlies verklaren dat hier wordt waargenomen, en zou passen bij mijn opmerkingen hierboven dat het lagere plan Forrest toestond om ongebruikte bronnen van andere gebruikers te lenen.




  1. Door komma's gescheiden tekenreeks naar lijst

  2. Hoe splits ik een waarde in meerdere rijen op de newline char in PostgreSQL?

  3. Welke SQL-query is sneller? Filter op Deelnamecriteria of Where-clausule?

  4. TSQL md5-hash anders dan C# .NET md5