2012-12-19 26 views
5

Używam Meteor na Heroku (free tier) z MongoHQ. Moja aplikacja jest teraz bardzo prosta, ładuje 3-4 wpisy z Kolekcji, ale kiedy rozmieszczę ją na Heroku, widzę śmieszne czasy ładowania (1-2 minuty). HTML jest renderowany natychmiast. Kiedy uruchamiam na darmowym serwerze Meteor.com, czas ładowania jest dużo niższy, ale wciąż wynosi około 15 sekund dla 4 małych kawałków danych. Nie widzę tego, kiedy wdrażam lokalnie, aplikacja pobiera dane z DB natychmiast.Dlaczego tak długo Meteor ładuje moje dane na Heroku?

Warto zauważyć, że nie uważam, że jest to problem "bezczynności" dla Heroku. Nawet jeśli mam już jedno okno przeglądarki z otwartą aplikacją, jeśli używam innej przeglądarki i spróbuję ponownie, nadal otrzymuję 1-2 minuty czasu ładowania. Jednak po załadowaniu danych wydajność wraca do doskonałości, potrafię czytać i pisać bez żadnych problemów.

Czego mi brakuje? Nie widzę żadnych błędów w konsoli, mongo pokazuje kilka zapytań w dziennikach i pokazuje, że szybko reaguje 4 dokumentami, ale najwyraźniej gdzieś w środku jest korek. Jakakolwiek pomoc w tej sprawie jest bardzo cenna, jeśli nie mogę się przedostać, ten Meteor jest teraz bezużyteczny dla moich potrzeb.

AKTUALIZACJA: Oglądałem ją z bliska w Firebug i wygląda na to, że wykonanie jest w dużej mierze niespójne. Czasami proste odświeżenie zajmuje 1 minutę, czasami zajmuje to 10 sekund. Zauważyłem jednak, że czasy, kiedy jest on wolny, GETs przechwytuje plik sockjs/info, a następnie POST jest przerywany (czasami wiele razy). Gdy biegnie szybko, a kolejne POST POST płynnie

Slow: 
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 22ms 
POST http://pocleaderboard.herokuapp.com/sockjs/029/su0d77fb/xhr Aborted 
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 27ms 
POST http://pocleaderboard.herokuapp.com/sockjs/132/uljqusxd/xhr Aborted 
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 28ms 
POST http://pocleaderboard.herokuapp.com/sockjs/154/kcbr6a5p/xhr Aborted 

Fast(er): 
GET http://pocleaderboard.herokuapp.com/sockjs/info 200 OK 1.08s 
POST http://pocleaderboard.herokuapp.com/sockjs/755/xiggb555/xhr 200 OK 1.02s 
+0

Z mojego doświadczenia, jeśli używasz wszystkiego, co jest wolne w heroku, jest wolne jak ****. Heroku jest świetnym narzędziem do testowania aplikacji, ale jeśli chcesz prędkości, którą musisz zapłacić, bardzo wątpię, że ma to coś wspólnego z tym, co robisz, tylko heroku to heroku (darmowa wersja) – Richlewis

Odpowiedz

3

Meteor zostanie załadowany tak szybko na miejscu, bo to nie zależy od połączenia internetowego i pliki mogą być tylko odczytywane z dysku twardym, a nie należy pobrać. Po załadowaniu danych jest tak samo wszędzie, gdzie host, ponieważ klient (ty) wykonuje wszystkie działania w bazie danych buforowanego mongo, a następnie po prostu czekać na serwer, aby powiedzieć, czy akcja była w porządku, czy nie.

Ale dla czasów ładowania Heroku, nie mam pojęcia, przepraszam!

AKTUALIZACJA: Są to długie ciągnięcia SockJS używane przez Meteor. Zwykle te ciągnięcia są przerywane tylko po naciśnięciu gorącego kodu (po dodaniu/zmianie/usunięciu pliku).

Albo Ty lub Heroku wydajecie się pisać lub zmieniać coś w katalogu. Ponieważ wtedy naciśnięcie klawisza Hot może zostać zainicjowane przez Meteor.