ASP.. NET工作线程的大部分活动时间都处于阻塞状态
本文关键字:时间 阻塞状态 活动 大部分 NET 工作 线程 ASP | 更新日期: 2023-09-27 18:09:44
我想确定ASP的作用。. NET工作线程。我的IIS 7安装默认允许最多25个工作线程,而我将其设置为1。
当用户请求.aspx
页时,我理解该请求将检索一个工作线程。但是,该页上的每个图像的加载是否也捕获了一个工作线程?一旦图像被检索,检索它的工作线程是否也负责将其传输给用户(通过阻塞tcp sockets?)?
让我们来看看用户和他们的浏览器对ASPX页面的web请求是如何看待的。
用户将浏览器导航到ASPX页面。在服务器上,IIS将其识别为ASP。.NET请求并将其路由到.NET处理程序进行处理,其中包括获取工作线程,处理页面,并将结果HTML返回给用户的浏览器。这并不包括交付实际的图像、JavaScript文件、CSS文件和其他外部资源——只是从页面本身生成的HTML返回到用户的浏览器。
当用户的浏览器呈现页面时,它会对页面上的其他资源(图像、JavaScript文件等)发出额外的请求。当IIS接收到对这些文件的请求时,它将把它们作为静态内容进行处理,因此ASP. xml将被调用。. NET处理程序(及其工作进程)不参与处理或交付内容。
请注意,您可以配置IIS使用。net处理程序来处理这些类型的请求,但对于静态内容,IIS不会立即这样做。
IIS 7的安装程序在安装时包含"Common Http Features->Static Content"。这个模块负责处理静态内容,我不认为它使用任何工作线程。
一个工作线程似乎有点少,即使是测试服务器。如果您的代码进入一个长进程(比如一个长查询),您将被阻止运行其他页面,等待单个工作进程结束。是什么促使您希望将其设置为1?
我不确定你说的是哪个IIS版本,所以这里有一些我在v5.1上读过的东西。
当使用ASPCompat和会话状态时,运行时可能会将对同一会话的请求序列化到单个线程。
否则,默认情况下,如果您向您的应用程序发出12个到休眠页面的请求,ASP. js将返回。NET将使每个后续请求等待,直到一个线程被前一个请求释放。您可以通过and配置设置(machine.config)控制此行为,其中并发线程的数量是maxWorkerThreads和minFreeThreads之间的差异。还请仔细检查这些设置是否设置为您的应用程序只能处理一个ASP。. NET请求。
如果你在asp.net应用程序代码中有阻塞调用,
如果请求的数据都在内存中,静态图像不应该通过Asp. js提供。. Net,像IIS或nginx这样的静态文件服务器应该会快得多。