2012-10-12 115 views
5

Cuando intento enviar 1000 mensajes simples a mi cola de Azure Service Bus desde una aplicación de consola simple (no en modo de depuración), demora 90 segundos con el modo http.Azure Service Bus velocidad

Con el modo nettcp estándar, demora 70 segundos.

¿La velocidad que obtienen los demás también? Esperaba que fuera más rápido, pero tal vez esto es correcto?

Respuesta

6

¿Estás haciendo todo esto en el mismo hilo? Intente utilizar varios subprocesos/tareas. Envíe los mensajes en paralelo. Además, si quieres un rendimiento más alto se puede intentar hacer algunos cambios en su app.config:

<system.net> 
    <settings> 
     <servicePointManager expect100Continue="false" useNagleAlgorithm="false"/> 
    </settings> 
    <connectionManagement> 
     <add address = "*" maxconnection = "48" /> 
    </connectionManagement> 
    </system.net> 

Por último, trate de ejecutar la aplicación de consola desde el interior de una máquina virtual de Windows Azure (preferiblemente el mismo centro de datos). Esto eliminará cualquier influencia de su conexión de WAN.

+0

Intente utilizar una VM mediana o más grande, las más pequeñas tienen IO limitado. –

+4

Paralelo.Para (0, 1000, i => SendM (i, cliente)) y sus cambios de configuración redujeron el tiempo a 10 segundos. ¡Gracias! – Martin

1

Consulte también el aprovechamiento de los métodos de envío por lotes. Azure SDK tiene un método en Service Bus Client Queue que le permite enviar un lote de mensajes a la vez. Reduce la sobrecarga total de la red a expensas de llamadas más grandes. Puede ajustar el tamaño del lote para que sea el máximo que le funcione, y colocar mensajes en cola hasta que complete un lote o se alcance un determinado tiempo de espera. Esto le permite realizar un lote, pero aún responder en un tiempo razonable.

Cuestiones relacionadas