Производительность рабочей роли Azure непостоянна — проблема

У меня есть рабочая роль Azure и веб-роль с экземпляром ExtraSmall.

Я передаю Service Bus BrokeredMessage для обновления сущности из веб-роли Azure.

Я только что протестировал обновление сущности. Первые три раза потребовалось 5 секунд для отражения в базе данных. после этого на каждое обновление уходило более 30 секунд. Я не знаю, почему производительность не соответствует рабочей роли Azure? Если кто-нибудь знает, пожалуйста, поделитесь своими мыслями.

Я отправляю и получаю сообщения синхронно.

Примечание. Рабочая роль, я подключаю базу данных для каждого обновления.

Пример кода класса WorkerRole

public override void Run()
{
 while (true)
  {
   receivedmsg = CUDClient.Receive();
   UpdateProjectEntity(receivedmsg);
   Thread.Sleep(1000);
  }
}
private void UpdateProjectEntity (BrokeredMessage msg)
{       
  ProjectModel model = msg.GetBody<ProjectModel>();
  //connect federation database
  CrmEntities _db = Azure.ConnectCustomerEntity(model.ShardId);
  //update entities 
  ....
 }

comment
Для лучшего понимания вашей проблемы, можете ли вы обновить свой вопрос и добавить немного больше информации об архитектуре вашей системы, например. как сообщение попадает в вашу базу данных и т.д.?   -  person Tom    schedule 16.01.2013


Ответы (2)


Одной из причин может быть то, что вы делите физический компьютер с 7 тяжелыми экземплярами. Когда они много работают, ваш экземпляр становится медленным. Однако от 5 до 30 секунд кажется много. Можете ли вы обновиться, чтобы использовать собственный экземпляр, снова протестировать и посмотреть, станет ли производительность более равномерной?

person Magnus Karlsson    schedule 16.01.2013
comment
Нет, это не так. веб-роль, рабочая роль и SQL Azure работают в среде Windows Azure. - person sivaL; 17.01.2013
comment
Да и одна физическая машина на азуре состоит из 8 инстансов. Каждая из ваших служб занимает один экземпляр. - person Magnus Karlsson; 17.01.2013
comment
Я не знаю, как обновиться, чтобы использовать собственный экземпляр? Не могли бы вы помочь мне? - person sivaL; 17.01.2013
comment
Вот руководство msdn, чтобы сделать это. msdn.microsoft.com/en-us/library/windowsazure/ee517255. aspx - person Magnus Karlsson; 17.01.2013
comment
Просто чтобы убедиться, что вы получаете такое же поведение в своей среде разработки? - person Magnus Karlsson; 17.01.2013
comment
Если подумать, я действительно больше не верю в это решение. Поведение скорее указывает на то, что что-то засоряет систему, когда вы ее используете. Вам следует подумать о том, чтобы предоставить более полное описание того, что вы делаете и с какими задачами работаете. - person Magnus Karlsson; 17.01.2013

Это в основном сообщение синхронного приема, поэтому оно медленное. Я преобразовал в сообщение Aynchronous Receive, производительность отличная. Смотрите сообщение здесь

Сообщение об асинхронном получении рабочей роли Azure : как долго я должен спать? (миллисекунды)

person sivaL    schedule 18.02.2013