工作流wcf的多个实例在内存中

时间:2011-04-30 11:09:36

标签: wcf workflow

我设计了两个WCF长期运行的工作流程(长寿命),名称为“WCF A”和“WCF B”。

我在'WCF A'中有一个循环,我在每次执行此循环时向'WCF B'发送一条消息。所以它可能在内存中存在'WCF B'的一些实例,直到'WCF B'停止消息。 WCF A和B都托管在Windows服务中。一开始执行Windows服务一切正常,但一段时间后它们将无法工作,因为我在任务管理器中监控它们不使用任何CPU使用。

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

这完全取决于,监视cpu使用情况并不能说明任何事情。它可能是:

  1. 死锁发生在循环的某个地方,也就是说每个实例都可能使用共享对象?
  2. 通道出现故障(因为超时,异常等)执行无法通过。
  3. 取决于WCF B的每个实例的哪个对象,它可能达到操作系统限制,(例如:打开的文件数)
  4. 从你的问题我猜你可能会发现调试服务很难,你可以尝试以下:

    1. 启用WCF日志记录,SO或Google上有大量条目
    2. 将调试器附加到您的服务,如果您发现这为您提供随机入口点,您可以尝试在服务的OnStart重载上调用Debugger.Launch()
    3. 登录到您通话的文件
    4. 以控制台应用程序启动您的服务
    5. 希望这会有所帮助。