IIS中应用程序池原理解析


对于已经能熟练挂接动易后台建设网站的同学们而言,“应用程序池”肯定不是一个陌生的名词。但是关于应用程序池运行机理—即为什么每次建站的时候基本都要设置应用程序池,可能并不是特别清晰。本篇文章将详细阐述和应用程序池有关的动态网站的基础知识。(黎智聪师兄笔述,李鸿儒记录整理)

先看看百度百科是怎么解释应用程序池的:
应用程序池:
    这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。
    Windows 2003同时支持两种工作模式,默认为IIS 6.0工作进程隔离模式。工作进程隔离模式防止一个应用程序或站点停止了而影响另一个应用程序或站点,大大增强了IIS的可靠性。那么如何设置两种工作模式呢?
    启动IIS管理器,右击网站,选择“属性”,打开属性对话框(图1)。在IIS 6.0工作进程隔离模式下,所有的应用程序代码都在隔离环境中运行,它们是如何进行隔离的呢?Windows 2003新增了应用程序池,工作进程隔离模式允许客户创建多个应用程序池,每个应用程序池都可以有不同的配置。因为这些应用程序池直接从内核(而非WWW服务)接收它们的请求,所以性能和可靠性得到了增强。要隔离运行在同一台计算机上但属于不同网站的Web应用程序,需要为每个网站创建单独的应用程序池。

下面用比较通俗的话解释一下:
1.
静态站点用DW设计好后,本地即可查看网页,而动态站点则不同,需要用iis挂接后才能查看。这也是HTML(静态站点)和ASP(动态站点)的不同点之一:HTML不需要调用内存和cpu进行换算,而ASP需要调用内存和cpu进行换算后方可呈现在用户面前。因为ASP需要把程序的代码翻译成服务器可以识别的1和0,再通过IIS的导出生成HTML代码。

2.HTML,对于服务器端几乎无任何负载,因为是直接输出到客户端,客户端的浏览器(如IE)即系HTML代码后,输出成我们所见到的漂亮的网页排版、界面。ASP,服务器端需要分配内存用以解析程序代码成计算机代码,从而输出HTML代码到客户端,最后客户端的IE解析HTML代码成为我们看到的漂亮界面。ASP比HTML多出了一部,服务器对程序代码的处理。

3.应用程序池就是可以看成装载计算机分配给动态网站的内存的容器。如果内存是水,那么应用程序池就是鱼缸,动态网站就是鱼缸中的金鱼。多个动态网站可以存在于同一个应用程序池里,即鱼缸中可以放多条金鱼。当然,如果金鱼多了,鱼缸中的空间有限,金鱼之间就会争抢空间,不是很坚固的鱼缸可能就会破裂,所有金鱼都会受到影响。即是动态网站多了,内存不足,可能会造成内存级别的溢出漏洞,影响所有在那个应用程序池上的动态网站。

4.一般一个动态网站,需要新建一个应用程序池,来分配内存和cpu资源,而不是多个网站存在于同一个应用程序池中。这样做的好处是一个应用程序池对应唯一一个进程,一个进程对应一个PID(在任务管理器中可以查到)。所以如果某个网站出了问题,占用很多cpu,在任务管理器中可以查到。若是多个网站共享一个应用程序池,那么就不能定位是哪个网站出问题了。所以服务器中一般一个网站对应一个应用程序池,当然这要内存足够大作为前提条件。

5.一般而言,内存不是很大的情况下是用一个应用程序池对应多个网站的,共享内存资源可以节约服务器内存。

6.IIS设计的时候,考虑到应用程序可能会在运算途中出错,导致后续的请求不能处理。所以,IIS的应用程序池是有一个自动回收的机制。右键属性可以看到。回收的时候,原来鱼缸的水(内存的数据)会倒掉,重新换新的。

7.当一个IIS服务,只提供一个“站点”(使用80端口),不需设置主机头。
当一个IIS服务,提供n个“站点”(公用80端口),则需要设置n-1个主机头。
当一个IIS服务,提供n个“站点”(各个站点有自己的端口,各不相同),不需设置主机头。
(主机头可以理解为网站的域名)

8.客户端访问网站域名的流程如下:
客户端浏览器发出请求 -> 查找本地PC的DNS(host文件) -> 查找网络上的DNS -> 获得服务器的IP -> 客户端访问目网站 -> 目的网站服务器检查自己所有的网站,看看哪个和客户端提出的域名匹配 -> 若无匹配,则返回错误页面;若匹配,则返回正常网页。
当一个IIS服务,提供n个“站点”(公用80端口),则需要设置n-1个主机头。

 


你可能感兴趣的:(iis,服务器,html,工作,asp,windows)