Augmenter la taille maximale et la performance du pool

Dans mon site Web ASP.net, j'ai une connection à une database SQL Server Express. Et parfois je reçois beaucoup d'erreurs comme

System.InvalidOperationException: le timeout d'expiration a expiré. Le timeout d'expiration s'est écoulé avant l'obtention d'une connection du pool. Cela peut être dû au fait que toutes les connections groupées étaient utilisées et que la taille maximale du pool a été atteinte.

Après avoir recherché l'erreur, j'ai trouvé que cela pouvait être dû à des connections SQL Server non fermées. Mais j'ai utilisé les connections SQL Server correctement et je l'ai éliminé correctement.J'ai utilisé using-statement pour disposer de la connection. Dans mon application, je reçois beaucoup de requests (connections à la database SQL Server) à un moment de pointe de la journée.

Donc, je prévois d'augmenter la taille maximale du pool. Maintenant, je ne l'ai pas spécifié dans ma string de connection. Donc, ce sera 100 (par défaut). Je prévois d'augmenter à 20000 afin que je ne reçoive pas l'erreur.

Est-ce que l'augmentation de la taille maximale du pool à ce nombre entraînera un problème? L'augmentation du pool max entraîne-t-elle des problèmes de performance?

EDIT: Voici un exemple de comment j'ai utilisé Using dans mon code

 Using con1 As New SqlConnection con1.ConnectionSsortingng = "" //conn ssortingng here con1.Open() doSomething() End Using Using con2 As New SqlConnection con2.ConnectionSsortingng = "" //conn ssortingng here con2.Open() doSomething() Using con3 As New SqlConnection con3.ConnectionSsortingng = "" //conn ssortingng here con3.Open() doSomething() End Using End Using Catch ex As Exception End Try 

EDIT: Je viens de tester en définissant la taille Max pool à 20000 dans mon application pour vérifier si le pool max cause vraiment le problème . Je m'attendais à ne plus avoir cette exception. Mais cela n'a pas résolu le problème ou peut-être pas la raison de l'erreur. Après avoir réglé la piscine max aussi j'ai eu plus de 50 erreurs au cours d'une durée de 3 heures. Donc je doute que ce soit vraiment dû à la taille de la piscine? Le message d'erreur indique que "Cela peut être dû au fait que toutes les connections groupées étaient utilisées et que la taille maximale du pool a été atteinte". Y a-t-il un autre cas où le même message d'erreur est affiché? S'il vous plaît aider.

Vous pouvez augmenter la taille du pool si vous le souhaitez. Il y a deux inconvénients:

  1. Plus de connections signifient plus d'utilisation des ressources.
  2. SQL Server a une limite de connection d'environ 30k connections. Lorsque vous l'épuiserez, vous perdrez la disponibilité.

Je recommand d'aller plus haut plus lentement. N'augmentez pas la taille du pool à 20k immédiatement. Pensez à ce que signifierait 20k connections: Cela signifierait environ 20k threads (ou less si un seul thread utilise plus d'une connection) s'exécutant en même time. Si vous êtes à cet endroit, vous avez probablement des problèmes de chargement.

Pourquoi avez-vous besoin de tant de connections? Pour les applications Web, vous avez généralement une seule connection ouverte en même time par requête en cours. Quelques centaines devraient suffire pour la plupart des cas.

Essayez de raccourcir la durée d'ouverture de chaque connection.