У меня есть несколько микросервисов, которые подключаются к одному экземпляру 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)?