热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

详细解说IIS应用程序池以及运用程序池回收AppPool第1/2页

什么是应用程序池呢?这是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。
因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。

        Windows 2003同时支持两种工作模式,默认为ISS 6.0工作进程隔离模式。工作进程隔离模式防止一个应用程序或站点停止了而影响另一个应用程序或站点,大大增强了IIS的可靠性。那么如何设置两种工作模式呢?

        启动IIS管理器,右击网站,选择“属性”,打开属性对话框(图1)。
大智の博客

在IIS 6.0工作进程隔离模式下,所有的应用程序代码都在隔离环境中运行,它们是如何进行隔离的呢?Windows 2003新增了应用程序池,工作进程隔离模式允许客户创建多个应用程序池,每个应用程序池都可以有不同的配置。因为这些应用程序池直接从内核(而非WWW服务)接收它们的请求,所以性能和可靠性得到了增强。要隔离运行在同一台计算机上但属于不同网站的Web应用程序,需要为每个网站创建单独的应用程序池。 

       创建应用程序池 

       在IIS管理器中,打开本地计算机,右键单击“应用程序池”,选择新建“应用程序池” (必须在工作进程隔离模式下才能建立应用程序池) 。“应用程序池名称”框中,输入新的应用程序池名称。如果在“应用程序池 ID”框中出现的 ID (如:AppPool #1)不是您想要的,可进行重命名。如果您单击了“将现有应用程序池作为模板”,请在“应用程序池名称”框中右键单击想要用来作为模板的应用程序池。最后单击[确定]。
大智の博客
      

 指派应用程序池

在 IIS 管理器中,右键单击您要为其指派应用程序池的应用程序,然后单击“属性”。 单击“主目录”选项卡,确认您正在指派的目录或虚拟目录的“应用程序名”是否已被填写。如果“应用程序名”框尚未被填写,请单击“创建”,然后输入名称。

在“应用程序池”列表框中,选择您想要为其指派的应用程序池的名称。最后单击[确定]。

大智の博客

  一起来看看有关应用程序池的一些问题。应用程序池的“属性”对话框有四页——回收,性能,运行状况,标识,如图六所示。在这些选项页中,最引人注目的恐怕就是“回收”页,使用该选项页可以管理工作进程的回收。在工作进程隔离模式中,IIS可以配置成定期重新启动应用程序池中的工作进程,从而更好地管理那些有错误的工作进程。这确保了池中的应用程序运行正常,并且可以恢复丢失的系统资源。为了回收工作进程,失败工作进程接收请求的能力将被限制,直到它处理完存储在请求队列中的所有剩余请求。为了排出当前请求,可以给予进程配置限制。同一命名空间组的替换工作进程在旧的工作进程停止前启动,从而防止服务中断。旧的进程完成其未决的请求,然后正常关闭,或者如果在达到了配置的时间限制、请求数、设置的时间计划,或当达到指定的内存用量限制后仍没有关闭,则明确地终止进程。默认情况下,应用程序池每隔1740分钟(29小时)回收一次。

  W3SVC根据“运行状况”页的选项来判断应用程序池运行是否正常,包括:每隔指定的时间Ping工作进程,时间按秒计,默认值30秒启动时间限制(工作进程必须在指定的时间内开始)关闭时间限制(工作进程必须在指定的时间内关闭)是否启动快速失败保护(如果在指定的时间段内一定数目的工作进程发生失败,则禁用应用程序池)。另外,ISAPI应用程序(包括ASP.NET和asp.dll)可以声明自己不再适合提供服务,要求回收。

  默认情况下,当IIS 6.0回收一个池时,它会使用一种称为overlapped recycle的回收技术。在这种回收模式下,失败的工作进程仍会保持运行状态,同时创建一个新的工作进程。IIS 6.0把新传入的请求传递给新的工作进程,但不拆除老的工作进程,直至老的工作进程处理完它队列中的请求,或者遇到超时错误。在此期间,TCP/IP连接不会丢失,因为有http.sys保持着连接的有效性。当失败的工作进程超时出错时,下一个请求传递给工作进程的请求是新的请求,因此原来保存在进程中的会话信息就会丢失。所有这类回收操作都自动进行,无需管理员干预,而且在大多数情况下,不会造成明显的服务中断现象。如有必要,可以将配置数据属性LogEventOnRecycle的值设置为1,指示W3SVC执行回收操作时生成一条事件日志记录。

  对于那些不能以多个实例运行的应用程序,overlapped recycle回收技术可能引起问题。如果遇到这类问题,可以将配置数据属性DissallowOverlappingRotation的值设置成True(1),关闭某个应用程序池回收操作时的进程“重叠”现象。另外,对于失败的工作进程,有时我们可能不想将它拆除,仍旧保留该进程,以便检测和寻找发生问题的根源,这时可以将配置数据属性OrphanActionExe设置成执行文件的名字,使得工作进程成为“孤儿”时执行文件仍保持运行状态。

  另一个与应用程序池有关的特性是,IIS 6.0允许将应用程序池配置成一个Web园(Web Garden)。要理解Web园的概念,可以设想这样一种情形:假设有一个IIS 5.0服务器和三个Web网站,每一个Web网站运行着相同的应用程序,如果IIS 5.0能够自动按照圆形循环的模式将请求依次发送给这些功能上等价、实际上分离的Web网站,将负载分离到三个不同的进程,就可以构成一个小型的Web农场(Web Farm)——这就是Web园。

  在IIS 6.0的Web园中,我们不必创建额外的Web网站,只要指定用于某个应用程序池的工作进程的数量就可以了。具体的配置步骤是:打开应用程序池的“属性”对话框,转到“性能”页,在“Web园”下面的“最大工作进程数”输入框中输入进程数量,如图八。当服务器的负载较小,不需要额外的工作进程时,IIS 6.0在一定的时间后(默认20分钟,可配置)自动缩减实际的工作进程数量如果负载变大,需要额外的工作进程,IIS 6.0再次增加工作进程数量。这一切操作都自动进行,不需要管理员干预。

大智の博客

图6

  两个新的配置数据属性——SMPAffinitze和SMPAffinitzeCPUMask——允许配置为工作进程指派的特定处理器:将SMPAffinitized属性设置成true表示应该把分配给应用程序池的特定工作进程指派给特定的CPU,SMPProcessorAffinityMask属性用来配置十六进制的处理器掩码,该十六进制处理器掩码指出应用程序池中的工作进程应该绑定到哪个CPU

12下一页阅读全文

推荐阅读
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
author-avatar
pigone
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有