【问题标题】:How do I measure the Networking time when executing a query against MongoDB in Nodejs (using mongoose)?在 Nodejs(使用 mongoose)中对 MongoDB 执行查询时,如何测量网络时间?
【发布时间】:2020-05-27 14:30:27
【问题描述】:

我有几个连接到单个 MongoDB 实例的微服务。微服务在 Nodejs (express + mongoose) 中,所有内容都在 docker-compose 文件中,并使用 Docker-Swarm 进行部署。我需要测量猫鼬模型的 findOne 方法(不是整个 HTTP 请求)的不同部分执行时间。当我测量总执行时间时,有时我什至得到高达 250 毫秒或 400 毫秒的值(系统中的高负载),有时我得到像 10 毫秒或 25 毫秒这样的值。但是当我将explain 与 mongo(在 NodeJS 中)一起使用时,它告诉我查询花费了 0 - 3 毫秒。我怀疑问题出在 docker-swarm 网络上,但我不知道如何测量 400 毫秒是由什么组成的。例如,我想知道开始与 mongo 交谈需要多长时间,反之亦然。

我想我可以使用tcpdump 并查看跟踪及其时间戳(不确定它是否有效)。我想我正在寻找更简单的东西,希望在 Node.js 中。

澄清: 我已经在服务器中测量了许多时间跨度。我目前正在寻找的是:

当我执行await MongooseModel.findOne({name:'vahid'})时,这个请求从节点到mongo需要多少时间(不是在mongo上执行查询的时间)?

【问题讨论】:

    标签: node.js mongodb docker mongoose database-performance


    【解决方案1】:

    驱动程序不会将网络 i/o 时间与查询执行时间分开。你可以试试:

    • 检查服务器描述的往返时间(这是平均的,旨在消除延迟峰值)
    • 在服务器端启用查询日志并查看是否提供时间信息

    【讨论】:

    • mongodb 在本地主机上。我尝试查询日志记录,但怀疑它是否有效
    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多