CONEXÕES ABERTAS API

ALTAIR148 14/06/2022 19:57:31
#500068
Boa noite,

Tenho uma API que feita em ASP.NET Core 3.1. Ela recebe ai cerca de 100 conexões simultâneas, porém acaba que fica abrindo muitas conexões no banco de dados. Estou utilizando a biblioteca Dapper.

Isso é comum? pelo fato de serem muitas maquinas diferentes fazendo a requisição ele vai abrir muitas conexões mesmo?
DS2T 15/06/2022 14:54:37
#500070
Opa Altair, boa tarde!

O Dapper é um facilitador mas não é muito útil sem um provedor. Qual banco de dados e provedor de dados voce está utilizando?
Digo isso porque se for um SQL Server e voce esteja usando o provedor de dados SqlClient (do ADO.NET), por padrão ele já gerencia um pool de conexões para voce - a não ser que voce explicitamente configurou para que não o usasse ou a cada conexão esteja utilizando configurações diferentes (pode entender como strings de conexão diferentes - o que geralmente não costuma ser o caso).

A ideia é basicamente reduzir a quantidade de conexões que precisam ser abertas e que passam por todas aquelas etapas custosas da conexão (o handshake do login, por exemplo) para tornar o acesso mais rápido e sua aplicação mais escalável. Voce pode ver mais informações abaixo:

Sql Server Connection Pooling

Se todas as conexões estiverem realmente paralelas acessando o banco de dados (o que pode acontecer, mas mesmo com as 100 requisições http ao mesmo tempo não significa necessariamente que todas terão simultaneidade com o acesso ao banco - ainda mais se for uma consulta rápida e tiver uma rede decente) não tem muito o que fazer. Mas se existir espaço para reaproveitar alguma conexão do pool, o ADO.NET o fará.

Outros bancos e provedores também possuem pooling de conexões, mas cada caso vai ser um caso.
Faça seu login para responder