соединение с typeorm db зависает, пока сервер все еще работает

#node.js #express #typeorm

#node.js #экспресс #typeorm

Вопрос:

Недавно я запускал некоторый нагрузочный тест для нашего js api express node с помощью typeorm. Тест очень прост, я использую цикл, чтобы попасть в конечную точку get food 3000 раз.

что-то вроде

 for (let i = 0; i < 3000; i  ) {
   fetch("http://url/food").then(resp=>resp.text()).catch(err=>console.log(err));
}
  

Я получил много ошибок ECONNRESET (зависание сокета). Но после этого я больше не могу попасть в эту конечную точку. Я все еще могу попасть в конечную точку индекса (для которой не требуется подключение к БД). Но кроме этого, вызов api просто зависает. Я думал, что сервер не работает, но я все еще могу получить доступ к конечной точке index (без подключения к БД).

Я предполагаю, что это может быть связано с подключением к typeorm db, возможно, мертвые вызовы api все еще поддерживают соединения с БД. Кто-нибудь видел подобное поведение раньше? Любая помощь будет оценена.

конечная точка индекса

 const router = Router();
router.get("/", function(req: Request, res: Response, next: NextFunction) {
  res.send("food index!!");
});

export default router;
  

конечная точка питания

 const router = Router();
router.get("/", getFoodController);

export default router;
  

getFoodController выдаст соединение с typeorm db

Когда я проверил журнал, я увидел множество

 GET /food -- ms --
  

Комментарии:

1. Не могли бы вы опубликовать getFoodController код здесь?

2. Это разумно. Поскольку пул соединений между typeorm и базой данных ограничен, каждый запрос будет использовать поток подключения из пула для запроса, а затем восстанавливать соединение до получения ответа. Когда количество запросов превышает количество соединений, которые могут быть использованы, произойдет застревание.