Ich habe einen MongoLab-Cluster, der es mir ermöglicht, Oplog-Tailing zu verwenden, um Leistung, Verfügbarkeit und Redundanz in meiner Meteor.js-App zu verbessern.
Problem ist: Seit ich es benutze, brauchen alle meine Publikationen mehr Zeit, um fertig zu werden. Wenn es nur 200ms dauert, ist das kein Problem, aber es dauert oft viel mehr, wie hier, wo ich die Publikation abonniere, die ich beschrieben habe. hier .
Diese Veröffentlichung hat bereits eine zu lange Antwortzeit, und die Beobachtungen von oplog verlangsamen diese auch, obwohl es bei weitem nicht die einzige Veröffentlichung ist, bei der das Beobachten von oplog so lange dauert.
Könnte mir jemand erklären, was passiert ist? Nirgends, wo ich im Internet suche, finde ich eine Erklärung dafür, warum das Beobachten von oplog meine Veröffentlichung so sehr verlangsamt.
Hier sind einige Screenshots von Kadira, um zu verdeutlichen, was ich sage:
Hier ist ein Screenshot von einem anderen Pub / Sub:
Und schließlich, einer, bei dem das Beobachten von Oplogs eine angemessene Zeit in Anspruch nimmt (aber immer noch mein Pub / Sub etwas verlangsamt):
Oplog Tailing ist sehr schnell. Oplog Tailing ist hier nicht das Problem.
Sie tun wahrscheinlich eine Menge Dinge, die Ihnen nicht bewusst sind, dass Veröffentlichungen langsam sind:
Collection.forEach
-Aufrufs durch. Dies ist unglaublich langsam und der Ursprung Ihrer schlechten Leistung in Methodenkörpern. Jedes Mal, wenn Sie ein einzelnes Dokumentupdate durchführen, das von Hunderten von gleichzeitigen Verbindungen überwacht wird, muss jedes dieser Updates aktualisiert werden. Durch eine Abfrage, die jeweils einzeln von einem Update gefolgt wird, können weder Mongo noch Meteor optimieren, und sie müssen darauf warten, dass jeder einzelne Benutzer bei jeder Änderung aktualisiert wird. Es ist eine doppelt asymptotische Steigerung Ihrer Leistung. Lösung : Überlegen Sie, wie Sie das Update mithilfe von {multi:true}
. observeChanges
langsam sind. Lösung : Denken Sie darüber nach, ob Sie wirklich ein einmaliges Abonnement für jedes Benutzerdokument benötigen. Meteor hat Optimierungen für identische Abonnements, die von mehreren gleichzeitigen Sammlungen gemeinsam genutzt werden. Tags und Links javascript mongodb meteor mongodb-oplog