Как измерить время работы в сети при выполнении запроса к MongoDB в Nodejs (используя mon goose)? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть несколько микросервисов, которые подключаются к одному экземпляру MongoDB. Микросервисы находятся в Nodejs (express + mon goose), и все находится в файле docker-compose и развертывается с использованием Docker-Swarm. Мне нужно измерить разные части времени выполнения для метода findOne (а не всего HTTP-запроса) модели mon goose. Когда я измеряю общее время выполнения, иногда я даже получаю значения до 250 мс или 400 мс (при высокой загрузке системы), а иногда получаю значения, например, 10 или 25 мс. Но когда я использую explain с mon go (в NodeJS), он сообщает мне, что запрос занял 0–3 мс. Я подозреваю, что проблема в сети docker -warm, но я не знаю, как я могу измерить, из чего состоят эти 400 мс. Например, я хотел бы знать, сколько времени потребовалось, чтобы начать разговор с пн go или наоборот.

Думаю, я могу использовать tcpdump и посмотреть на трассировки и их временные метки (не уверен, что это работает). Думаю, я ищу что-то попроще, надеюсь, в Node.js.

Уточняю: Я уже измеряю многие временные интервалы на сервере. Тот, который я сейчас ищу, это:

когда я выполняю await MongooseModel.findOne({name:'vahid'}), сколько времени требуется для этого запроса до go от узла до понедельника go (не время, необходимое для запроса к исполнению в пн go)?

1 Ответ

0 голосов
/ 27 мая 2020

Драйвер не отслеживает время ввода-вывода в сети отдельно от времени выполнения запроса. Вы можете попробовать:

  • проверить время приема-передачи в описании сервера (оно усреднено и предназначено для сглаживания всплесков задержки)
  • включить ведение журнала запросов на стороне сервера и посмотреть, который дает информацию о времени
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...