2010-02-13 8 views
5

En un cliente nuestro, los candidatos toman pruebas con nuestro software. Si su prueba finaliza, algunos cálculos se realizan en el servidor. Ahora, a veces, 200 candidatos pueden finalizar su examen al mismo tiempo, por lo que 200 cálculos se hacen simultáneamente. Los cálculos todos parecen ir bien, pero algunas llamadas al servidor IIS7 volver un error de http ...¿Cuándo es demasiado cargar para IIS7?

En Flex, este es el error:

code = "NetConnection.Call.Failed" 
description = "HTTP: Status 200" 
details = "http://servername/weborb.aspx" 
level = "error" 

no es el estatuto 200 OK? Entonces, ¿qué pasa aquí? ¿Es incluso un problema de IIS7? De los 200 candidatos, 20 obtuvieron este mensaje. Al reiniciar su prueba, todo funcionó bien.

He encontrado this sobre el tema, pero me pregunto si esto tiene algo que ver con mi problema (la próxima semana nuestro cliente hará algunas pruebas de resistencia y ya les pediré que prueben si la solución en esta publicación funciona) .

Algunas preguntas:

  • ¿Puede ser que los bloques de IIS7 ciertas llamadas HTTP cuando la carga es mucho?
  • ¿Cómo puede saber que IIS7 bloqueó esas llamadas debido a demasiada carga?
  • ¿Es posible configurar estas cosas?

Técnicamente, en el futuro me gustaría poner los cálculos en cola, pero por ahora, no hay tiempo ni presupuesto para eso.

Aplicación: Flex, WebORB, ASP.NET, IIS7 en SQLSERVER2008. Servidor es Windows Server 2008.

+0

¿Qué error están recibiendo, 500 servidores, 404, otros? Esto ayudaría a diagnosticar el problema. –

+0

Acabo de editar mi publicación. Gracias. –

+0

¡Nunca pensé que diría esto, pero este es un problema de hardware! El número de conexiones y el rendimiento del sistema dependen de las especificaciones del servidor y el ancho de banda n/w. Creo que debes preguntarle al proveedor del servidor por algunos números y luego correlacionar tus resultados. Y tiene razón en que los servidores sueltan conexiones cuando experimentan alta carga y latencias – questzen

Respuesta

1

Este problema me parece muy familiar. Tenemos un montón de widgets flexibles que están conectados a un servidor y a veces también devuelve "Netconnection.Call.Failed". Para nosotros, parece que IIS (y MSSql detrás) no pueden procesar todas las solicitudes a tiempo, por lo tanto, algunas de ellas están expiradas. Intente verificar cuánto tiempo tarda cada solicitud/todas las solicitudes, luego verifique la configuración de tiempo de espera.

0

Technically, in the future I would like to queue the calculations, but for now, there isn't time nor budget for that.

Una cola no es tan difícil de poner junto con una secuencia de comandos de procesamiento por lotes corriendo las tareas programadas de Windows. Simplemente descargue los resultados en una base de datos SQL, o si es realmente vago, inserte filas en SQL con una matriz serializada, luego haga que "vuelvan" para ver sus resultados. "Espere, sus resultados aún se están procesando".

Te tomaría menos tiempo que esperar en SO una respuesta de bala de plata en mi opinión.

1

Hay muchas cosas que puede hacer para ajustar el rendimiento de su servidor y IIS.

para responder a sus preguntas:

un límite máximo de conexiones simultáneas (más otros ajustes) en IIS 7 se pueden configurar mediante la selección de su sitio web en el Administrador de IIS y seleccionando la opción 'Configuración avanzada' en el panel Acciones de la derecha. Aunque por defecto este es un número mucho más alto que 200.

Looking in the IIS log files, específicamente los códigos de estado de retorno pueden darle una indicación de lo que salió mal. Del mismo modo, el registro de eventos de Windows también debe informarle sobre cualquier excepción que haya ocurrido.

1

Sugiero que active el equilibrio de carga entre instancias de IIS, o considere usar nginx para balanceo de carga.

también establecen el límite de 200 usuarios más. Dado que en IIS, cada usuario que se conecta a su aplicación cuenta como 1 instancia de usuario, en algún momento usará 200 espacios de usuario. Esta es la configuración predeterminada y puede establecerlo en un número mucho más alto.

También establezca su tiempo de espera en un número superior.

También mirar Comet si tratando de llamar resultado consistente como datos en tiempo real (stock, clima, chat, panel de mensajes)

Cuestiones relacionadas