Už jsem to viděl u klienta, který mi volal o pomoc v nouzi.
Po nějakém šťouchání s heroku bash
nakonec jsme došli k závěru, že nová instance byla na obzvláště vytíženém základním serveru. Provedli jsme převzetí služeb při selhání prostřednictvím povýšení následovníka na jiný stroj, v tomto okamžiku se výkon výrazně zlepšil - ačkoli samo převzetí služeb při selhání bylo náročné kvůli problémům s hlavním počítačem.
Pokud vím, instance Heroku jsou uzly Amazon EC2 (Xen VM), které provozují kontejner LXC k izolaci databázových clusterů každého uživatele Heroku. LXC nabízí spíše menší izolaci než úplný VM; instance mohou bojovat o RAM, diskové I/O, CPU atd., v závislosti na přesné politice nakonfigurované s OpenCZ, případných zásadách kontrolní skupiny atd.
Pokud se nacházíte v instanci, kde ostatní uživatelé moc nedělají, a pokud kontejner umožňuje vaší DB používat zdroje, které aktuálně ostatní uživatelé nevyžadují, můžete snadno vidět stabilně vyšší než zaručený výkon.
Mám podezření, že lidé na větších plánech heroku s větší pravděpodobností skutečně využívají prostředky systému, se kterým sdílíte kontejner.
Pokud provedete převzetí služeb při selhání do větší instance, kde jsou všichni uživatelé, protože skutečně potřebují zdroje nabízené větším počítačem, můžete ve skutečnosti získat méně zdroje celkově, protože každý ve skutečnosti používá své podíly.
Je frustrující, že Heroku nabízí tak malý přehled o systémech, které provozují jejich databáze. Je těžké říct, jak/jestli vyrovnávají zatížení mezi hostiteli kontejnerů, jaké je základní zatížení systému atd.
V komentáři @Forrest poukázal na to, že Heroku má užitečné na stránce podrobností o jejich serveru , což ukazuje, že pouze nižší úrovně jsou vícenájemci, ale vyšší úrovně nikoli. To by snadno vysvětlilo zde pozorovanou ztrátu výkonu a odpovídalo by to mým poznámkám výše, že nižší plán umožňoval Forrestovi půjčovat si nevyužité zdroje od jiných uživatelů.