2009-02-15 36 views
24

Recientemente borré y reinstalé/configuré todos los componentes de mi web y servidores de bases de datos. Estoy ejecutando IIS 6, .NET 3.5, SQL Server 2005. Los dos servidores son máquinas virtuales separadas en el mismo dominio. Mi aplicación web funciona perfectamente ... el 90% del tiempo. Pero de vez en cuando me siento este error o un error genérico en tiempo de ejecución:Período de espera del semáforo

System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

pueden ustedes me dan algunas pistas sobre dónde empezar solución de problemas? Realmente creo que me he perdido algo en IIS.

¡Gracias de antemano!

Respuesta

10

Después de solucionar esto durante horas y sentarse en el teléfono con mi grupo de alojamiento descubrieron que había un problema con su configuración de red. La solución se hizo más clara cuando durante mis pruebas una de las máquinas virtuales repentinamente no pudo encontrar el dominio, y un simple 'ping' a la IP de cada cuadro de la otra ocasionalmente expiraba. Esto descarta el DNS por completo. Después de que el grupo de alojamiento aplicara la configuración adecuada en su extremo, ¡la aplicación se ha mantenido estable y RÁPIDA!

¡Gracias por la ayuda de todos!

+33

¿podría detallar en qué configuración de red se actualizó? ¿Cuál fue la solución completa correcta? ¡Gracias! – madhurtanwani

+31

http://xkcd.com/979/ :( – Jonesopolis

+4

No hay detalles pero esta respuesta obtuvo 7 votos ... Si bien algunas respuestas tienen detalles completos pero obtienen votos negativos. Bienvenido a StackOverflow. –

2

Puede usted vuelva a comprobar la carga en el servidor db? Los conseguimos de vez en cuando en nuestro env env, pero nunca en el entorno prod.

+0

La carga debería estar bien, este error se produjo cuando solo una persona lo estaba probando. –

+0

Cargar aquí no significa necesariamente el número de personas que usan la aplicación, sino la cantidad de procesos que se ejecutan en el servidor de base de datos y la cantidad de la CPU/red que se está asignando a la instancia de db. – renegadeMind

2

Bueno me gustaría empezar por asegurar que estoy ejecutando la última versión de los controladores de red de mi máquina virtual.

Suena como comunicaciones está fallando entre el 2 VMS. Intente abrir un socket TCP entre las dos máquinas y vea si muere después de un cierto período de tiempo.

2

Algunos indicadores son here. Básicamente la capa de red emite el error y el servidor SQL simplemente lo informa.

Espero que ayude.

0

comprobación de si el procedimiento almacenado tiene cualquier línea SET nivel de transacción de aislamiento de lectura UNCOMMITTED

Para mí este fue el tema

0

tarde al juego, pero yo estaba recibiendo el mismo error con una web .NET aplicación/MS SQL. El sitio alojado en IIS en GoDaddy VPS, el alojamiento tiene múltiples IP, DB alojado en Azure.

Creo que mi problema era (idiota!), Simplemente se olvidó de poner las direcciones IP dedicadas del sitio de GD GD en el servidor de seguridad Azure para el servidor SQL. Por alguna extraña razón, el tráfico llega a/desde GD/Azure fuera de la dirección IP real del sitio web (las direcciones de enlace de IIS) y funciona.

Pero más a menudo que no las direcciones reales de IIS de unión son los que gritan a los Azure para interactuar con los servicios de SQL. Corregí las configuraciones del firewall en Azure para incluir las direcciones IP correctas de GoDaddy y (tocar madera) el error del semáforo parece haber desaparecido.

En otras palabras, antes de empezar a buscar grandes problemas, empezar de forma sencilla y asegúrese de comprobar las cosas fáciles, como la red/cortafuegos.

Cuestiones relacionadas