首页 文章

Azure Cloud 服务工作者角色崩溃和不 Health

提问于
浏览
2

我有一个具有一个Web角色和一个Worker角色的项目 . 每当我在本地测试它时,我的web和worker角色都会按预期工作 . (注意,尽管本地版本使用Azure计算模拟器,但服务总线队列和消息队列使用实时 Cloud 版本 . )但是,Cloud Service工作者角色在某些操作期间会出现崩溃的趋势 . 它导致实例“回收”并且消息卡在Azure Service Bus队列中 . 直到我在本地运行 Cloud 服务,它才能成功处理消息,然后将其从队列中删除 . 即使角色有效,Azure也经常在仪表板上告诉我工作者角色正在运行“不 Health ” .

有一次,Azure门户网站打印了此错误:

未处理的异常:System.Reflection.ReflectionTypeLoadException

我在我的项目中为此添加了异常处理,并在将更新部署到 Cloud 后再次尝试,但同样的事情不断发生 . 当我将异常处理添加到我的项目时,我不得不将System.Reflection库添加到我的worker角色,但这让我更加困惑 . 我不明白为什么我收到一个错误的调用库,我甚至没有在我的项目中使用 .

任何人对这个问题有什么想法?

Update:

我做了一些手动调试,并注意到在Worker Role的Run()中调用了异常 . 导致问题的代码行涉及使用Entity Framework调用数据库 . 具体路线是:

Image imageEntity = db.Images.Find(ImgViewFromQueue.Id);

我想知道问题是否与Azure服务器上未正确启用或配置的Entity Framework有关 .

2 回答

  • 1

    我在OSFamily = 3(Server 2012)上运行工作角色时遇到类似问题 . 如果你在3上运行并且可以回滚到2,你可能会发现worker角色工作得很好 . 我在Azure支持工程师的帮助下回答了我的问题 - Azure Worker Role runs on osFamily="2" (Server 2008R2) but Fails on osFamily="3" (Server 2012)

    区别:在OS系列2中,WaWorkerHost在角色初始化过程生成的临时帐户(具有GUID名称)下运行,该帐户具有特殊权限;在OS系列3中,WaWorkerHost由“NETWORK SERVICE”帐户运行,此帐户缺少一些工作人员角色的权限 .

    如果您必须拥有OSfamily 3,则可以尝试使用提升的权限运行 . 在cscfg文件的 <WorkerRole> 元素中,添加子项:

    <Runtime executionContext="elevated" />
    
  • 0

    不确定您是否可以启用InelliTrace并重新部署您的软件包,希望您能在系统中找到实际的异常 . 只需2美分 .

相关问题