O'Reilly logo

MongoDB: The Definitive Guide, 2nd Edition by Kristina Chodorow

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 17. Seeing What Your Application Is Doing

Once you have an application up and running, how do you know what it’s doing? This chapter covers how to figure out what kind of queries MongoDB is running, how much data is being written, and how to investigate what MongoDB is actually doing. You’ll learn:

  • How to find slow operations and kill them

  • Getting and interpreting statistics about your collections and databases

  • Using command-line tools to give you a picture of what MongoDB is doing

Seeing the Current Operations

An easy way to find slow operations is to see what is running. Anything slow is more likely to show up and have been running for longer. It’s not guaranteed, but it’s a good first step to see what might be slowing down an application.

To see the operations that are running, use the db.currentOp() function:

> db.currentOp()
{
    "inprog" : [
        {
            "opid" : 34820,
            "active" : true,
            "secs_running" : 0,
            "op" : "query",
            "ns" : "test.users",
            "query" : {
                "count" : "users",
                "query" : {
                    "username" : "user12345"
                },
                "fields" : {

                }
            },
            "client" : "127.0.0.1:39931",
            "desc" : "conn3",
            "threadId" : "0x7f12d61c7700",
            "connectionId" : 3,
            "locks" : {
                "^" : "r",
                "^test" : "R"
            },
            "waitingForLock" : false,
            "numYields" : 0,
            "lockStats" : {
                "timeLockedMicros" : {

                },
                "timeAcquiringMicros" : {
                    "r" : NumberLong(9),
                    "w" : NumberLong(0)
                }
            }
        },
        ...
    ]
}

This displays a list of operations that the database is performing. Here are some of the more important fields in the output:

"opid"

This is the operation’s unique ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required