2011-10-09 18 views
14

Jestem w trakcie przenoszenia wszystkich moich danych z udostępnianej bazy danych Heroku do Amazon RDS. Przed przełączeniem wszystkiego na RDS, przeprowadziłem kilka testów lokalnie, aby upewnić się, że moja aplikacja działa poprawnie. Testy te wyraźnie spowalniają, że czas zapytania jest wolniejszy w RDS. Na dokładnie tym samym wniosek, uzyskać:Heroku udostępnił db kontra Amazon RDS Performance

Na Heroku, z Heroku wspólne db:

Completed 200 OK in 98ms (Views: 0.7ms | ActiveRecord: 56.0ms) 

Lokalnie, z RDS db instancję

Completed 200 OK in 253ms (Views: 0.7ms | ActiveRecord: 127.9ms) 

Chodzi mi o czasy ActiveRecord. Czy czegoś brakuje? Heroku wyraźnie oświadcza o swoim wspólnym db:

Współdzielone bazy danych są odpowiednie do testowania, testowania i niskiej skali produkcji aplikacji produkcyjnych.

A jednak wydaje się być szybszy niż ta instancja RDS, za którą płacę 80 $ miesięcznie. Czy udostępniony system operacyjny Heroku działa lokalnie? Ponieważ jest dla mnie oczywiste, że każda baza danych uruchomiona lokalnie w mojej aplikacji heroku będzie szybsza niż jakikolwiek db, który będzie poza nią. Amazon twierdzi, że każde zapytanie trwające dłużej niż 10 ms jest uważane za "powolne zapytanie". Ale teraz wydaje się, że każde zapytanie odbędzie się pod numerem co najmniej 25 ms za samą podróż w obie strony z aplikacji do serwera Amazon + aktualny czas zapytania. Czy może czegoś brakuje?

+0

To pytanie prawdopodobnie należy do ServerFault. No cóż. – samvermette

Odpowiedz

13

Z tego co wiem, instancje Heroku EC2 działają w strefie dostępności na Wschodzie, więc tworzenie instancji RDS w tej samej strefie jest prawie takie, jak w przypadku lokalnej bazy danych (uważam, że tak działają wspólne bazy danych Heroku).

Po skonfigurowaniu środowiska pomostowego dla mojej aplikacji bezpośrednio na Heroku i podłączeniu go do mojej instancji RDS, czasy zapytania były znacznie szybsze niż w przypadku, gdy testowałem je lokalnie (gdzie każde zapytanie SQL musiało odbyć obieg z mojej lokalnej maszyny do serwery RDS).

Jedyna drobna rzecz, która pozostała bez odpowiedzi, to jak określić, w której konkretnej podstrefie dostępności działa moja aplikacja heroku, więc mogę ją dopasować do mojej instancji RDS (chociaż prawdopodobnie nie ma to większego znaczenia niż globalna strefa dostępności).

enter image description here

+2

Aby jeszcze bardziej skomplikować sprawę, Amazon losuje strefy według liczby użytkowników. Tak więc twój us-east-1b może być moim my-east-1c –

+0

Szukam tej samej rzeczy. Tworzę nową instancję RDS dla mojej aplikacji Heroku i chciałbym się dowiedzieć, która podstrefa dostępności powinien być wybrana dla najlepszej wydajności (i bez dodatkowych kosztów w BW). Wybrałem strefę us-east-1, ale te inne strefy, us-east-1b, us-east-1c, us-east-1d i "No Preference", nie mam pojęcia, który wybrać. Czy powinienem zostawić "Brak preferencji", czy powinienem wybrać konkretny? – Guillermo

+0

@Guillermo Nie sądzę, że podstrefa wpływa na wydajność. Wybrałem opcję "bez preferencji" i wydaje się, że nie ma opóźnień pod względem czasu zapytań. – samvermette

Powiązane problemy