0

N'étant pas un administrateur de base de données (encore moins un MS administrateur de base de données :), j'ai reçu des plaintes qu'un morceau de code que j'ai écrit laisse des «connexions dormantes» dans la base de données.Dormir connexions dans SQL Server

Mon code est Java et utilise Apache Commons DBCP pour le regroupement de connexions. J'utilise également le JdbcTemplate de Spring pour gérer l'état de la connexion, il n'est donc pas question de fermer les connexions (puisque la bibliothèque le fait pour moi). Ma question principale est, du point de vue d'un administrateur de base de données, ces connexions peuvent-elles provoquer des pannes ou de mauvaises performances?

This question est lié, actuellement les paramètres ont été laissés tels qu'ils étaient là (connexions actives/inactives infinies dans le pool).

Répondre

1

Vraiment, pour répondre à votre question, une idée du nombre de ces connexions « endormis » serait bien. Il est également important de savoir si l'objectif principal de ce serveur est de servir votre application ou si votre application en fait partie. Il est également important de savoir s'il existe plusieurs instances de votre application (par exemple, sur plusieurs serveurs Web) ou si ce n'est que le cas. Dans mon expérience, il y a peu ou pas de frais généraux associés aux connexions inactives sur du matériel moderne, tant que vous n'atteignez pas des centaines. Cela dit, en regardant votre question précédente, permettre à la piscine de générer un nombre illimité de connexions ne semble pas sage - je vous recommande de définir un plafond, même si vous le définissez à des centaines.

Je peux vous dire d'au moins une situation douloureuse avec des pools de connexions qui fuient, qu'il est coûteux d'avoir un millier de connexions ouvertes à un seul serveur SQL, même si elles sont inactives. Il me semble me souvenir que le serveur a commencé à le perdre (n'acceptant pas les nouvelles connexions, les requêtes simples arrivant à expiration, etc.) en approche de 2000 connexions (c'était du SQL 2000 sur le matériel de milieu de gamme il y a quelques années).

Espérons que cela aide!

1

Apache DBCP a maxIdle paramètres de connexions à 8 et maxActive paramètres à 8. Cela signifie que 8 nombre de connexions actives et 8 nombres de connexions inactives peuvent exister dans le pool. DBCP réutilise les connexions lors de l'appel à la connexion. Vous pouvez définir ceci selon votre condition. Vous pouvez consulter le document ci-dessous:

DBCP Configuration - Apache

+0

J'ai appris qu'en posant la question précédente :), ce qui m'intéresse, c'est si ces connexions «dormantes», comme on dit, peuvent avoir un impact sur les performances de SQL Server. –

+0

@Alex - Habituellement, dans un système live, le nombre de connexions est alloué en fonction des besoins d'utilisation. Pour une application avec 250 utilisateurs en temps réel, nous avons fourni 30 connexions max. S'il y a plus d'applications qui accèdent à la même base de données, il est préférable de l'allouer en fonction du nombre de connexions dont chacune d'entre elles aurait besoin. Et il est évident que le nombre de connexions actives simultanées affectera le serveur de base de données, dépend également des ressources (RAM, CPU) du système. –

Questions connexes