我有Azure Worker Role和Web Role with ExtraSmall Instance.
我正在传递服务总线BrokeredMessage以从Azure Web角色更新实体。
我刚刚测试了更新实体,前三次在数据库中反映需要5秒。在那之后,每次更新都需要30多秒。我不知道为什么在Azure Worker Role中性能不一致?如果有人知道,请分享你的想法。
我正在同步发送和接收消息。
注意:Worker角色,每次更新我都连接数据库
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
....
}
一个原因可能是您与7个重型实例共享物理计算机。当它们工作很多的时候,你的实例就变慢了。然而,5秒到30秒似乎很多。您可以升级到使用自己的实例,再次测试,然后看看性能是否更均匀?
这基本上是同步接收消息,这就是为什么慢。我将其转换为异步接收消息,性能非常出色。见此处
Azure Worker Role异步接收消息:我应该休眠多长时间?(毫秒)