2012-10-12 26 views
5

Podczas próby wysłania 1000 prostych komunikatów do kolejki Azure Service Bus z prostej aplikacji konsoli (nie w trybie debugowania), trwa to 90 sekund z trybem http.Prędkość magistrali usługi Azure

W standardowym trybie nettcp zajmuje to 70 sekund.

Czy prędkość jest również dostępna dla wszystkich innych osób? Spodziewałem się, że pójdzie szybciej, ale może to prawda?

Odpowiedz

6

Czy robisz to wszystko w tym samym wątku? Spróbuj użyć wielu wątków/zadań, aby przesłać wiadomości równolegle. Również, jeśli chcesz większą przepustowość można spróbować wprowadzenie pewnych zmian w app.config:

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

Wreszcie spróbować wykonywania aplikacji konsoli z poziomu systemu Windows Azure VM (najlepiej takie same datacenter). Wyklucza to wpływ twojego połączenia WAN.

+0

Spróbuj użyć średniej lub większej maszyny wirtualnej, mniejsze mają ograniczoną liczbę we/wy. –

+4

Parallel.For (0, 1000, i => SendM (i, client)) i zmiany konfiguracji skróciły czas do 10 sekund. Dziękuję Ci! – Martin

1

Zobacz również wykorzystanie metod wysyłania partii. Pakiet Azure SDK ma metodę w kolejce klienta magistrali usług, która umożliwia wysyłanie partii wiadomości naraz. Zmniejsza całkowite obciążenie sieci kosztem większych połączeń. Możesz ustawić wielkość partii jako maksimum, które działa dla Ciebie, i kolejkować komunikaty, dopóki nie wypełnisz partii lub osiągnięty zostanie określony czas oczekiwania. To pozwala na wsad, ale nadal reaguje w rozsądnym czasie.

Powiązane problemy