Multithreading IIS请求步骤

Multithreading IIS请求步骤,multithreading,iis,Multithreading,Iis,假设我有一个标有ReqA的请求。这就是我到目前为止所理解的 ReqA来到IIS 此请求由HTTP.SYS处理 HTTP.SYS将此请求传递给相应的应用程序池 应用程序池将此请求传递给工作进程(w3wp.exe) 现在进入下一阶段: 每个工作进程有两个线程池 A.工作线程池b。I/O线程池 每个线程池都有自己的队列 A.请求队列b。I/O队列 (每个由100条螺纹组成) ReqA进入工作线程池 同样,request ReqB将遵循上述步骤并最终进入工作线程池。 现在,如果ReqC是第101个请求,

假设我有一个标有ReqA的请求。这就是我到目前为止所理解的

  • ReqA来到IIS
  • 此请求由HTTP.SYS处理
  • HTTP.SYS将此请求传递给相应的应用程序池
  • 应用程序池将此请求传递给工作进程(w3wp.exe)
  • 现在进入下一阶段:

  • 每个工作进程有两个线程池 A.工作线程池b。I/O线程池
  • 每个线程池都有自己的队列 A.请求队列b。I/O队列 (每个由100条螺纹组成)
  • ReqA进入工作线程池
  • 同样,request ReqB将遵循上述步骤并最终进入工作线程池。 现在,如果ReqC是第101个请求,那么它将在工作线程池的请求队列中等待。这就是为什么100个用户可以同时进入IIS中托管的站点的原因

    我都理解对了吗


    我还有一个问题。在本讨论中,阻塞I/O(因为IIS在节点之前阻塞I/O)和多线程的神话在哪里?

    请求!=用户。另外,ASP.NET本身也会进行一些排队,以避免向线程池发送垃圾邮件。这意味着,主要关注的是请求的数量。100个请求可以来自单个用户,也可以来自100个单独的用户,每个用户可以发出一个请求。我说得对吗?