【问题标题】:IIS - Handling the load for a Chat serviceIIS - 处理聊天服务的负载
【发布时间】:2011-02-21 12:38:00
【问题描述】:

我们有一个用 WCF 编写的聊天服务,我们将它托管在一个单独的 IIS 站点中。现在我计划在整个聊天应用程序中添加日志功能(在 MS SQL Server 数据库中),我不想影响核心聊天服务的性能。我正在编写一个单独的 WCF 服务,负责在数据库中写入条目。

我的问题是,我可以将新的日志记录服务托管为单独的 IIS 站点来处理传入请求,而无需与常规服务共享负载,还是可以托管在同一站点下的单独虚拟目录中?

由于聊天应用是实时的,所以在性能上要非常小心

请求日志服务+访问 数据库 = 一些延迟

我不想包含在主要服务中。有什么建议吗?

更多解释

让我告诉你我为什么要单独服务。

如果日志和聊天在同一个服务中-

现在我的观点是,如果这两个服务都托管在同一个站点(只有一个 IIS 入口点)下会更好吗?还是将它们作为不同的站点托管更好?

【问题讨论】:

  • 为什么要实现日志服务而不是直接将日志添加到聊天服务?
  • 我想将记录延迟添加到原始聊天服务周期中。它会影响应用程序的响应能力。
  • 请检查我的解释。如果我错了,请纠正我。

标签: wcf web-services performance iis


【解决方案1】:

IIS 中的站点实际上只是表示实体,因为您可能希望将一个应用程序绑定到 site1.example.com,而将另一个应用程序绑定到 site2.example.com。服务器资源方面的“负载”与绑定到应用程序池工作进程直接相关。

因此,结合所有这些,您可以将新的日志记录服务放在最有意义的地方。将其分配给单独的应用程序池,它不会在 IIS 或 ASP.NET 管道方面与您的其他服务“共享”资源。 (很明显,同一服务器上的应用正在竞争有限的资源,但这似乎不是您关心的问题)

也就是说,我不能完全理解你所布置的系统之间的关系。记录请求不是应用程序本身的一部分吗?或者您的客户是否同时保持与聊天服务和日志服务的连接? (这似乎是一个奇怪的架构)

【讨论】:

  • 没有错,只是见仁见智。我想我们俩都假设你会在聊天服务本身中做一些数据库工作(否则你基本上只有一个“反弹”服务)。总而言之,这对你来说是一个架构决定。在负载/等方面,我在这个答案中提供的一切仍然是正确的。无论您如何拆分,IIS 站点都无关紧要,只需确保您的应用程序池是独立的
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 2011-08-05
  • 2016-01-13
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多