2014-09-03 136 views
0

我有Azure CLoud服务托管的ASP.NET MVC应用程序。应用程序处理呼叫阻止

我正在使用CQRS架构与命令处理程序。

而且这个系统总是有正在运行的线程,这些线程一直在后台工作。应用程序的主要目标是向医疗中心患者发送短信。系统可与以下步骤:

  1. 系统启动命令(例如StartMessageSending),这 选择一些患者
  2. 它发送短信通知他们
  3. 并进入上确定的时间间隔睡觉。

间隔超时后,此线程重复先前的所有步骤,直到存在任何发送的患者。

与此并行,系统可以使用相同的命令(StartMessageSending)运行任意数量的其他线程。在平均系统上有大约3个与StartMessageSending命令同时运行的线程。

如果我查看应用程序日志,我会看到Application Dispose的频繁调用。 而这些配置导致系统的奇怪行为:命令没有完成他们的工作。

我给日志的2个例子:

1)命令的正确工作

enter image description here

2)命令的不正确工作

enter image description here

而一个在几次应用程序调用中处理它。 并且间隔等于30秒。 enter image description here

经过这些应用处理后,当前工作命令未完成其工作。

我想说明的是,我禁用了IIS上的idleTimeout(20分钟不使用)超时,并设置为特定的夜间时间periodicRestart IIS回收。

此外,应用程序非常庞大,并且在使用不同的命令时,这个问题经常发生。我举例说明了问题的一般描述。

所以可能是有人知道:

1)我怎样才能防止这些应用程序部署?

2)或者他们的电话有什么可能的原因?(一般)

谢谢:)

+2

虽然这些截图是可爱的,我们需要看到你的代码 – 2014-09-03 10:18:11

+0

@YuvalItzchakov,应用是非常巨大的。这个问题在不同的命令的工作经常occures。我举例说明了问题的一般描述。 – 2014-09-03 10:24:20

+1

一般描述是不够的。我们只能假设做错了什么,不能给我比一般的答案。请尝试制作一个简单,小而完整的问题重现。 – 2014-09-03 10:36:28

回答