While investigating performance issues on our Atlas hosted database, we began to observe a high count of Docs Returned in the Atlas profiler. This high number of returned documents is the result of the changestream getMore calls of the cursor, and we sometimes see the number of returned documents reaching over 5000 records. We are aware that we are not making that many changes and are wondering what could explain the high number of records being returned. Is this number a cumulative count from the time the cursor was established?
Mongo Changestream getmore profiling
101 Views Asked by user1884081 At
1
There are 1 best solutions below
Related Questions in MONGODB
- Meteor MapReduce Package Error: A method named is already defined
- Token based authorization in nodejs/ExpressJs and Angular(Single Page Application)
- Big data with spatial queries/indexing
- How to recover from losing all your /data/db
- What are the benefits of using the fields option when querying in Meteor
- Node JS Async Response
- mongoose get property from nested schema after `group`
- What to use for subdocuments ID's in MongoDB?
- ORM Code First versa Database First in Production
- How to profile a Yii2 based API?
- get length of embedded document in mongoDB with jade
- Architecture: Multiple Mongo databases+connections vs multiple collections with Express
- Why are numbers being inserted into MongoDB incorrectly?
- hibernate ogm mongo db, how to get count of collection?
- C++ Mongodb driver, not working
Related Questions in PROFILER
- Visual Studio Profiler - how to see function body
- Visual Studio 2013 XSLT Profile
- How can I profile Signed Assemblies with VS 2012
- symfony2 logger in profiler
- Excel COM Add-in not loaded after using Visual studio performance profiler
- NoClassDefFoundError on ProfilerRuntimeObjLiveliness error when profiling on WildFly in Netbeans
- can LD_PRELOAD trick considered as a type of instrumentation?
- Score-P callpath depth limitation of 30 exceeded
- How can I ignore many endpoints in Skylight?
- java get peak of used heap memory
- How to attach profiler to docker process
- Find out which code run Entity Framework sql code
- Yourkit API heap dump analysis
- Can't install Silex webprofiler
- What else can be done with Rights to Run Sql Profiler
Related Questions in CHANGESTREAM
- How use MongoDB change streams in Node.js to populate a new collection
- Unable to create watch on multiple collections mongodb
- Enable change streams for Amazon DocumentDB
- Mongo Changestream getmore profiling
- How to filter the update not to include a parent field when using change stream in Mongodb
- Best way to handle multiple change streams with SignalR
- NextJS Server Component update Client component when data changes
- How to use mongodb change streams
- Error occurs while changeStream watch() my mongodb database using nodeJs
- Change streams mongodb duplications
- mongodb changestream “pipeline” not working nodejs
- Why mongodb return empty entities from change streams?
- Getting 'Unrecognized expression '$or''/ "Unknown top level operator $or" in my mongodb change streams
- Mongodb changestream pipeline query does not work
- Mongodb - watch changestream in documents with nested array element of certain value
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?

From the comments:
No, the number in your screenshot is not cumulative.
Your screenshot is from the Atlas profiler. Both the Atlas profiler documentation as well your reference to the screenshot being associated with a
getMorecall point to the fact that we are looking at the results of a single operation.Somewhat relatedly, the
Response Lengthfield in that screenshot corresponds to thereslenof the operation. Again this is the amount of data transferred for that single call. There is a hard cap of 16MB of data transmitted per batch, so the size of the documents being returned influence how many will get sent in a single batch.Thanks for the additional context! You are looking at something 'different' here though which is the source of confusion and incorrect conclusion.
In this interface the object being reported against is the cursor itself. A cursor is the object that is created when a query, including a change stream, is executed and will return more than one batch of data.
As you have correctly concluded, the
nDocsReturnedmetric in this interface is cumulative for the cursor. The documentation confirms this:Immediately afterwards that page also informs us about
nBatchesReturned:So each individual
getMorecall will add to these cumulative cursor totals that can be observed incurrentOp. But the log file and profiler are only going to report the metrics associated with the individualgetMoreexecutions (that are slow enough to be reported in those places).It sounds like either there are more changes being made than you are expecting or change streams are being (re)opened more often than anticipated (or not using 'resume after' functionality appropriately).