¿Cuán simultáneas son las solicitudes en realidad? ¿Todos escribirán la dirección exactamente al mismo tiempo?
Dicho esto, perfile su aplicación localmente, esto le permitirá estimar el uso de CPU, red y memoria en Azure. Entonces, en lugar de ver cuántas instancias necesita, ¡mire cómo puede reducir el requerimiento! Aplique estas sugerencias y haga un perfil local de nuevo.
La mayoría de los consejos de rendimiento tienen una compensación entre la CPU, la memoria o el uso de ancho de banda, la idea es garantizar que se escalen por igual. Si su aplicación se queda sin memoria, pero tiene un montón de CPU y red, no
Para una encuesta de una sola página, asegúrese de que su html, css & js esté minimizado, asegúrese de que sea almacenable en caché.
Combínelas si es posible, y para obtener realmente escalables, inserte archivos estáticos (css, js & images) en un CDN. Todo esto reduce el número de solicitudes que el servidor web tiene que tratar y, por lo tanto, reduce el número de webroles que necesitará = menos red.
¿Cómo devuelve el ashx la respuesta? es decir, ¿está enviando html, xml o json? personalmente, me gustaría que devuelva JSON, ya que esto requerirá menos ancho de banda de red, y muy probablemente menos procesamiento del lado del servidor = menos memoria y red.
Uso Asyncronous API para acceder al almacenamiento azul (esto utiliza los puertos de finalización IO para liberar el hilo de IIS para manejar más solicitudes hasta el almacenamiento azul regresa = permitiendo a la CPU a escala)
tijmenvdk ya se ha mencionado el uso de colas para escribir . ¿Cambia la lista de preguntas? de lo contrario, almacénelos en caché, de modo que la aplicación solo tenga que leer desde el almacenamiento de la tabla una vez en el inicio y una vez por cada cliente para el cierre final = guarde la red y la CPU a expensas de la memoria.
Todos estos consejos son igualmente aplicables a una aplicación web normal, en un solo servidor o entorno de granja web.
Lo que estoy tratando de decir es que lo que no se puede medir, no se puede mejorar, y la medición, la mejora y el costo van de la mano. El escalado dinámico reducirá los costos, pero fundamentalmente si su aplicación no se ha medido y el uso de los recursos ha sido optimizado, preguntarse cuántas instancias necesita no tiene sentido.
Hola Tijmen, gracias por tus comentarios. Empezamos las pruebas de carga, pero dado que soy bastante nuevo en este tema, siempre es bueno intentar no reinventar la rueda ... La encuesta es algo diferente: los 30,000 visitantes están viendo un espectáculo y responderán la pregunta al mismo tiempo . Esto aumentará las solicitudes por segundo a un estimado de 10.000. Usamos clases de almacenamiento en caché, singleton y estamos optimizando la solución en este momento para hacerlo lo más eficiente posible. Nos sumergiremos en el monitoreo y agregaremos recursos de inmediato. –
Para este tipo de rendimiento, observe la diferencia de rendimiento entre escribir en una cola de Azure en lugar de hacerlo directamente en una tabla de Azure ... la cola debe ser más rápida, puede obtener algo de rendimiento allí. Necesita escribir una función de trabajador para procesar los datos en la cola, pero eso no está en la ruta perf-critical. Independientemente de la solución, asegúrese de revisar el tiempo de ejecución de la solicitud para todas las visitas (y no para los promedios), para asegurarse de que no haya ~ 10% de las visitas que tarden demasiado sin que aparezcan en los valores promedio. – tijmenvdk