Widziałem to już wcześniej z klientem, który zadzwonił do mnie po pomoc w nagłych wypadkach.
Po pogrzebaniu w heroku bash
w końcu doszliśmy do wniosku, że nowa instancja znajduje się na szczególnie obciążonym serwerze bazowym. Dokonaliśmy przełączenia awaryjnego poprzez promocję obserwatora na inną maszynę, w którym to momencie wydajność znacznie się poprawiła - chociaż samo przełączenie awaryjne było trudne ze względu na problemy z masterem.
O ile wiem, instancje Heroku to węzły Amazon EC2 (maszyny wirtualne Xen), które uruchamiają kontener LXC w celu odizolowania klastrów baz danych każdego użytkownika Heroku. LXC oferuje raczej mniejszą izolację niż pełna maszyna wirtualna; instancje mogą rywalizować o pamięć RAM, we/wy dysku, procesor itp., w zależności od dokładnej polityki skonfigurowanej w OpenCZ, dowolnych zasad grupy kontrolnej itp.
Jeśli korzystasz z instancji, w której inni użytkownicy nie robią wiele, a kontener pozwala Twojej bazie danych na korzystanie z zasobów, które nie są obecnie wymagane przez innych użytkowników, możesz łatwo zauważyć stale wyższą niż gwarantowana wydajność.
Podejrzewam, że osoby korzystające z większych planów heroku częściej korzystają z zasobów systemu, z którym dzielisz kontener.
Jeśli przejdziesz awaryjnie do większej instancji, w której są wszyscy użytkownicy, ponieważ naprawdę potrzebują zasobów oferowanych przez większą maszynę, możesz otrzymać mniej ogólne zasoby, ponieważ wszyscy faktycznie korzystają ze swoich udziałów.
To frustrujące, że Heroku oferuje tak mały wgląd w systemy, które obsługują ich bazy danych. Trudno powiedzieć, w jaki sposób/czy równoważą obciążenie między hostami kontenerów, jakie jest podstawowe obciążenie systemu itp.
W komentarzu @Forrest wskazał, że Heroku ma przydatne strona ze szczegółami serwera , co pokazuje, że tylko niższe warstwy są wielodostępne, ale wyższe nie. To z łatwością wyjaśniałoby zaobserwowaną tutaj utratę wydajności i pasowałoby do moich komentarzy powyżej, że niższy plan pozwalał Forrestowi pożyczać nieużywane zasoby od innych użytkowników.