SQL - saturacion de conexiones en server sql

 
Vista:

saturacion de conexiones en server sql

Publicado por estelaLeonard (2 intervenciones) el 28/11/2018 04:37:01
Buenas tardes grupo, soy nueva, he visto el exelente aporte que hacen y por lo cual solicito deseperadamente de su ayuda , tengo un servidor sql 2012 r2 en el cual se estan quedando en suspend , y en sleep varias peticiones, verificando mi web service realizo un pool de conexiones, ya verifique si no existe fuga en las conexiones, estrese el web services y la base para determinar adonde esta el problema, y este radica en que hay muchas conexiones a una sola consulta, tengo que conectar 300 terminales de 2 colegios al servidor y que todos esten interactuando y ya no se que mas hacer. Por favor su ayuda. De antemano pro sus consejos y vivencias.





Estela Leonard
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

saturacion de conexiones en server sql

Publicado por Isaias (1919 intervenciones) el 28/11/2018 18:52:00
Hola Estela

En la escuela hace muchos años (uuuuuuuuu), me enseñaron la teoria de las TRES CAPAS, CLIENT-TRANSACCIONAL-DATABASE y me dijeron que a la base, solo debía conectarme cuando lo necesitara.

- Crear Conexión
- Ejecutar
- Recibir
- Eliminar Conexión

¿Cumple tu aplicativo con esta condición?, No creo, estas generandO POOL DE CONEXIONES, entonces, ¿que pasa con la conexiones que NO son cerradas?, se van a un estado de SLEEPING, ¿sabes que cada conexion consume 4k de memoria?, este activa o no.

¿Porque algunas conexiones se van a SUSPEND?, porque el motor de la base de datos NO TIENE LOS RECURSOS necesarios (memoria, procesadores, I/O disco) para poder resolver las consultas y encola las peticiones. ¿Esta bien configurada tu memoria?, ¿están actualizados tus indices y estadísticos?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 35
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

saturacion de conexiones en server sql

Publicado por Cesar (13 intervenciones) el 28/11/2018 19:05:53
Hola.

Como te comenta Isaias, casi seguro el problema es que tu aplicacion (en este caso, parece que el web service), no esta cerrando las conexiones.

Tendrias que publicar tu codigo, para que podamos ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

saturacion de conexiones en server sql

Publicado por Estela Leonard (2 intervenciones) el 28/11/2018 21:25:44
Hola Isaias gracias por tu pornta respuesta, efectivamente lo estoy haciendo por un pool de conexiones coloco valores min= 5 y valores maximos = 100, segun vi en www.mugperu.com/portal/ForosDiscusion/tabid/104/view/topic/postid/1155/Default.asp, pero siempre me deja las conexiones abiertas y no me las cierra como puedo hacer en ese caso? por que cada conexion tiene su proceso de insert, y update. Tengo 150 GB de disco duro , un procesador de 4, memoria de 24gb , y aun sigue dejando las conexiones en sleep y en suspend
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

saturacion de conexiones en server sql

Publicado por Isaias (1919 intervenciones) el 29/11/2018 19:35:09
Again

Las conexiones en SUSPEND es porque tu servidor ya no tiene la capacidad de "responder" a tantas conexiones y prefiere dejar algunas en "espera" (suspend).

Las conexiones en SLEEPING, son porque no se cerraron adecuadamente, te paso un código donde "Matas" a todas aquellas conexiones que tienen mas de 24 horas sin interacción con el motor de base de datos, aplicalo, regularmente.

"Así como se entrega / AS IS)"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE @spid INT
DECLARE @SQLString NVARCHAR(50)
 
USE master
WHILE EXISTS(SELECT spid
			FROM master..sysprocesses
			WHERE status = 'sleeping' AND
			last_batch <= DATEADD(DD, -1, GETDATE())
			AND spid > 50 and spid <> @@spid)  -- Los spids del 1 al 50, son del sistema
	BEGIN
		SELECT TOP 1 @spid = spid FROM master..sysprocesses
			WHERE status = 'sleeping' AND
			last_batch <= DATEADD(DD, -1, GETDATE())
			AND spid > 50 and spid <> @@spid
		SET @SQLString = N'KILL ' + CONVERT(VARCHAR(10), @spid)
		EXECUTE sp_executesql @SQLString
		CONTINUE
	END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar