Мы видим странное, хотя и несколько предсказуемое поведение с использованием Mongoose в тесте нагрузки. По завершении теста служба продолжает делать запросы некоторое время после завершения загрузки. Я думаю, что может быть, что запросы находятся в очереди и не отбрасываются после истечения таймаута.Запрашивает ли запросы Mongoose?
Допустим, что мы выполняем запросы каждые 5 мс, которые выполняются в течение 10 мс. При одном соединении могут произойти две вещи:
- Половина запросов отбрасывается, поскольку соединение используется.
- Избыточные запросы выставляются в очередь и выполняются, когда соединение освобождается.
В документации, в которой описано поведение Mongoose, когда база данных перегружена, я ничего не нашел. Похоже, что последний вариант происходит.
Существует опция установки тайм-аута запроса, но не указывается, измеряется ли этот тайм-аут из первоначального запроса запроса или выполнения запроса к базе данных. Я подозреваю, что это тоже последнее.
Я считаю, что это связано с поведением Узел, а не с Мангуста. Когда ваш запрос запрашивает у Mongoose запрос, этот запрос выполняется асинхронно, что означает, что он будет выполнен «когда это возможно». Если пул подключений к базе данных исчерпан, частью «когда это возможно» будет, когда в пуле будет доступно новое соединение, которое может быть долго после завершения теста. – Nepoxx