我有ExtraManMare实例的Azure辅助角色和Web角色 .
我正在通过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
....
}
2 回答
一个原因可能是您与7个重型实例共享物理计算机 . 当他们工作很多时,你的实例会变慢 . 但是,5秒到30秒似乎很多 . 你可以升级到使用自己的实例,再次测试,然后看看性能是否更均匀?
这基本上是同步接收消息,这就是为什么慢 . 我转换为Aynchronous Receive消息,性能非常好 . 请看这里的帖子
Azure Worker Role Asynchronous Receive message: how long I should put the sleep for? (milliseconds)