2012-12-19 4 views
5

Ich benutze Meteor auf Heroku (freie Stufe) mit MongoHQ. Meine App ist momentan sehr einfach, sie lädt 3-4 Einträge aus einer Sammlung, aber wenn ich sie auf Heroku stelle, sehe ich lächerliche Ladezeiten (1-2 Minuten). Der HTML-Code wird sofort gerendert. Wenn ich auf dem freien Server von Meteor.com arbeite, sind die Ladezeiten viel niedriger, aber immer noch ungefähr 15 Sekunden für 4 winzige Datenstücke. Ich sehe das nicht, wenn ich lokal deploye, app zieht Daten sofort aus der DB.Warum dauert es so lange, bis Meteor meine Daten auf Heroku lädt?

Es ist erwähnenswert, dass ich nicht glaube, es ist ein "Leerlauf" Problem für Heroku. Auch wenn ich bereits ein Browser-Fenster mit der gerade geöffneten App geöffnet habe, wenn ich einen anderen Browser verwende und es erneut versuche, bekomme ich immer noch 1-2 Minuten Ladezeiten. Sobald die Daten geladen sind, geht die Leistung wieder zurück und ich kann problemlos lesen und schreiben.

Was fehlt mir? Ich sehe keine Fehler in der Konsole, mongo zeigt mehrere Abfragen in den Protokollen und zeigt, dass es schnell mit 4 Dokumenten reagiert, aber scheinbar irgendwo in der Mitte gibt es einen Stau. Jede Hilfe mit diesem wird sehr geschätzt, wenn ich nicht vorbeikommen kann, ist Meteor für meine Bedürfnisse jetzt nutzlos.

UPDATE: Ich habe es in Firebug genau beobachtet, und es scheint, dass die Leistung weitgehend inkonsistent ist. Manchmal dauert eine einfache Aktualisierung 1 Minute, manchmal dauert es 10 Sekunden. Aber was ich bemerkt habe ist, dass die Zeiten, wenn es langsam ist, es die sockjs/info Datei abruft, dann gleich danach wird der Sockjs POST abgebrochen (manchmal mehrmals). Wenn es schnell läuft, laufen die POST und nachfolgende POSTs glatt

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

In meiner Erfahrung, wenn Sie etwas verwenden, das frei ist mit Heroku ist es langsam wie ****. Heroku ist großartig, um Test-Apps da draußen zu bekommen, aber wenn du Geschwindigkeit willst, musst du bezahlen, ich bezweifle sehr, dass es etwas damit zu tun hat, was du rennst, nur Heroku ist heroku (die kostenlose Version) – Richlewis

Antwort

3

Meteor so schnell lokal geladen wird, weil es nicht von Ihrer Internetverbindung abhängig ist und die Dateien können nur von einer Festplatte gelesen werden und nicht müssen heruntergeladen werden. Und sobald die Daten geladen sind, ist es überall, wo Sie hosten, da der Client (Sie) alle Aktionen in Ihrer zwischengespeicherten Mongo-Datenbank ausführt und dann einfach darauf wartet, dass der Server sagt, ob die Aktion in Ordnung war oder nicht.

Aber für die Heroku Ladezeiten habe ich keine Ahnung, Entschuldigung!

UPDATE: Dies sind die Long-Pulls von SockJS, die von Meteor verwendet werden. Normalerweise werden diese Pulls nur bei einem Hot-Code-Push abgebrochen (wenn eine Datei hinzugefügt/geändert/entfernt wird).

Entweder Sie oder Heroku scheinen etwas im Verzeichnis zu schreiben oder zu ändern. Da kann dann ein Hot Code Push von Meteor ausgelöst werden.

Verwandte Themen