PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Heroku Postgres DB mais lento após a atualização


Já vi isso antes com um cliente que me ligou pedindo ajuda de emergência.

Depois de fuçar um pouco com o heroku bash eventualmente concluímos que a nova instância estava em um servidor subjacente particularmente ocupado. Fizemos um failover via promoção do seguidor para outra máquina, quando o desempenho melhorou bastante - embora o failover em si fosse desafiador devido aos problemas com o mestre.

Até onde eu sei, as instâncias do Heroku são nós do Amazon EC2 (Xen VMs) que executam um contêiner LXC para isolar os clusters de banco de dados de cada usuário do Heroku. O LXC oferece bem menos isolamento do que uma VM completa; instâncias podem competir por RAM, E/S de disco, CPU, etc., dependendo da política exata configurada com OpenCZ, quaisquer políticas de grupo de controle, etc.

Se você estiver em uma instância em que os outros usuários não estão fazendo muito e se o contêiner permitir que seu banco de dados use recursos que não são atualmente exigidos por outros usuários, você poderá ver facilmente um desempenho superior ao garantido.

Eu suspeito que as pessoas em planos heroku maiores são mais propensas a realmente usar os recursos do sistema com o qual você está compartilhando um contêiner.

Se você fizer um failover de promoção para uma instância maior, onde todos os usuários estão lá porque eles realmente precisam dos recursos oferecidos pela máquina maior, você poderá obter menos recursos em geral, porque todos estão realmente usando seus compartilhamentos.

É frustrante que o Heroku ofereça tão pouca visibilidade dos sistemas que executam seus bancos de dados. É difícil dizer como/se eles balanceiam a carga entre hosts de contêiner, qual é a carga subjacente no sistema, etc.

Em um comentário, @Forrest apontou que Heroku tem um página em seus detalhes do servidor , mostrando que apenas os níveis inferiores são multilocatários, mas os níveis superiores não são. Isso explicaria facilmente a perda de desempenho observada aqui e se encaixaria nos meus comentários acima de que o plano inferior estava permitindo que o Forrest emprestasse recursos não utilizados de outros usuários.