1

我有带有 ExtraSmall 实例的 Azure Worker Role 和 Web Role。

我正在传递 Service Bus BrokeredMessage 以从 Azure Web 角色更新实体。

我刚刚测试了更新实体,前三次在数据库中反映需要 5 秒。之后,每次更新都需要 30 多秒。不知道为什么 Azure Worker Role 的性能不一致?如果有人知道请分享您的想法。

我正在同步发送和接收消息。

注意:工人角色,我为每次更新连接数据库

代码示例 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 
  ....
 }
4

2 回答 2

0

一个原因可能是您与 7 个重型实例共享物理计算机。当他们大量工作时,您的实例会变慢。但是,5 秒到 30 秒似乎很多。你能升级到使用自己的实例,再次测试,然后看看性能是否更均匀?

于 2013-01-16T11:28:51.297 回答
0

这基本上是同步接收消息,这就是为什么慢。我转换为异步接收消息,性能非常好。看这里的帖子

Azure Worker Role 异步接收消息:我应该休眠多长时间?(毫秒)

于 2013-02-18T11:15:55.083 回答