日期:2014-05-16  浏览次数:20409 次

IIS的工作原理的疑问
     本人刚刚从事asp.net开发,但是对IIS的工作原理还存在着一些疑问,特请教群里高手们:
     1.在IIS7.0的网站管理里面,右键网站有个高级设置,里面有个最大并发数,这里的并发数指的是什么,因为所以的请求都会先经过http.sys处理,这里可不可以理解为http.sys在某一时刻所能承受的并发数?
     2.一个应用程序池中可以包含多个站点,当http.sys接收到客户端的请求的时候,会选择对应的应用程序池,http.sys是否是单线程工作,如果是单线程工作,在网站访问量大的情况下是否会出现瓶颈问题?(因为我想http.sys也要做一些判断处理,性能肯定会有损耗)
     3. http.sys会接收客户端的请求,会根据请求,选择对应的应用程序池,会将请求放在应用程序池的队列中去,默认的IIS7.0的队列长度是1000,这里的队列程序和前面提到的并发数之间是什么关系,应用程序池对应一个工作者进程,所有的处理都会在这里进行,会对不同的资源请求作出不同的相应,如果是asp.net,就会加载ISAPI,进而加载CLR,而CLR会创建APPDomain,然后开始处理请求,HttpRuntime>httpApplicationFactory>HttpAlication>,这是第一个请求做做的事情,我的问题是当第二个请求过来的时候,IIS会做哪些事情,w3wp是不是多线程运行的,如果是,线程池是多大,如何设置,怎么设置最合理,第二个asp.net请求过来的时候,会不会重复的去加载ISAPI,并行处理是怎么做的。
     4.IIS6.0应用程序池里面有个资源回收,这里的回收,是回收w3wp的资源吗,具体的要回收哪些资源,为什么要回收,在我看来w3wp就是一个请求线程池,来循环的接收请求。
  
     以上问题可能会问的比较怪,大家都什么高见,尽情发表吧。

------解决方案--------------------
  1.在IIS7.0的网站管理里面,右键网站有个高级设置,里面有个最大并发数,这里的并发数指的是什么,因为所以的请求都会先经过http.sys处理,这里可不可以理解为http.sys在某一时刻所能承受的并发数?

应该是允许同时维持会话的个数,当一个客户端开启多个浏览器的时候,连接数甚至少于连接的客户端数量。

  2.一个应用程序池中可以包含多个站点,当http.sys接收到客户端的请求的时候,会选择对应的应用程序池,http.sys是否是单线程工作,如果是单线程工作,在网站访问量大的情况下是否会出现瓶颈问题?(因为我想http.sys也要做一些判断处理,性能肯定会有损耗)

不会,和线程没有关系。

  3. http.sys会接收客户端的请求,会根据请求,选择对应的应用程序池,会将请求放在应用程序池的队列中去,默认的IIS7.0的队列长度是1000,这里的队列程序和前面提到的并发数之间是什么关系,应用程序池对应一个工作者进程,所有的处理都会在这里进行,会对不同的资源请求作出不同的相应,如果是asp.net,就会加载ISAPI,进而加载CLR,而CLR会创建APPDomain,然后开始处理请求,HttpRuntime>httpApplicationFactory>HttpAlication>,这是第一个请求做做的事情,我的问题是当第二个请求过来的时候,IIS会做哪些事情,w3wp是不是多线程运行的,如果是,线程池是多大,如何设置,怎么设置最合理,第二个asp.net请求过来的时候,会不会重复的去加载ISAPI,并行处理是怎么做的。

会使用线程池,一般自动管理就可以了。

  4.IIS6.0应用程序池里面有个资源回收,这里的回收,是回收w3wp的资源吗,具体的要回收哪些资源,为什么要回收,在我看来w3wp就是一个请求线程池,来循环的接收请求。
 
一个应用程序池代表一个进程。