【发布时间】:2013-04-18 05:36:41
【问题描述】:
我推断,由于 ASP.NET Web 应用程序被授予固定数量的工作线程和 I/O 线程,这由 web.config 文件中的<processModel> 设置控制,因此,对于具有对于许多用户来说,旋转新的工作线程或使用 .NET 线程池中的线程来执行诸如记录错误或发送电子邮件等任务并没有特别的好处。
也就是说,假设在我的web应用中,对于每一个进来的请求,request handler连续执行3个任务,分别是Task A,接着是Task B,接着是Task C,然后返回结果,这是一个 HTML 页面。
但是,在这三个任务中,任务 B 与生成的 HTML 没有任何关系。这可能是一项任务,例如在日志文件中记录一段文本。
然后,如果我将任务 B 移动到另一个工作线程,而 CurrentThread(也是 ASP.NET 工作线程池中的一个工作线程)将更快返回,并为我的工作带来更好的响应时间应用程序的用户,我的应用程序可以服务的并发用户数将受到影响,因为任务 B 需要从同一个 ASP.NET 工作线程池分配新的工作线程。
因此,在 Web 应用程序场景中,我的理解是否正确:分叉新线程会对性能产生积极影响,但会对可伸缩性产生不利影响。因此,如果我们有幸通过购买大量硬件进行横向扩展,我们就必须编写多线程服务器端代码?
如果不是,那我们只是用一个换另一个?
【问题讨论】:
标签: asp.net .net architecture