设为首页 收藏本站
查看: 1507|回复: 0

[经验分享] IIS应用程序池多工作进程设置及Session共享

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-15 04:12:35 | 显示全部楼层 |阅读模式
  在调优iis的时候,朋友分享给我一个特别棒的设置方法步骤,感谢好朋友的分享。
  
  IIS应用程序池多工作进程设置及Session共享
1 概述
  微软的IIS作为Windows平台下Asp.Net网站发布的默认WEB服务器,在性能上提供了比较大的弹性和可伸缩性,通过应用程序池工作进程数的设置,可以支持从几十到上万并发数量的访问。本文档对相应设置过程进行操作指引,并对设置过程中的注意事项进行重点描述。
2 应用程序池多工作进程设置
  根据以往的经验值,在主流的PC-SERVER主机(Xeon E5645 @ 2.4GHz,6核心12线程,32G内存)上,每个应用程序池的单一工作进程,能够大约承受30-50个左右的并发,如果超出此并发数量,可能会出现IIS无法响应、或响应时间明显变长的问题。通过合理设置应用程序池的最大工作进程数,可显著提高IIS应对高并发的能力,减少网站响应时间。
2.1 设置步骤
  1、 找到待设置网站对应的应用程序池,如图 1所示:
  
  图 1 找到应用程序池
  2、 在所选应用程序池上点击右键,选择【高级设置】,如图 2所示:
  
  图 2 高级设置
  3、 在弹出的【高级设置】窗口中找到【最大工作进程数】,并设置为合理值,如图 3所示:
  
  图 3 设置最大工作进程数
  4、 点击【确定】按纽保存设置。
2.2 注意事项
  1、 最大工作进程数值的设置依据
  在确定每个应用程序池的最大工作进程数时,最主要参考的数据包括网站的最大并发用户数以及WEB服务器的可用内存数。最大并发用户数需要通过一段时间的观察,记录下在系统忙时的最大并发用户数,按照每工作进程能承载30个并发的原则来确定应用程序池的最大工作进程数。同时要注意,每个工作进程大约会占用200M左右的系统内存,在设置最大工作进程数的时候,要主要最大工作进程数与200M的乘积不要超过系统最大可用内存数。一般情况下,建议按照每次增加5个工作进程数的方式对最大工作进程数进行调整,调整完后对网站观察一段时间,如依然无法满足要求,再继续增加5个工作进程数。
  2、 session共享问题
  如果网站没有用到session机制,则不会引发此问题。如果用到了session机制进行传值和保存数据,则需要考虑在应用程序池多个工作进程间进行session共享,防止出现session丢失的问题。此问题的解决措施见session共享设置
  3、 合理的资源回收机制
  大多数应用系统都存在工作时间使用量高、非工作时间使用量低的情况,针对这种现象,在系统非忙时应合理的释放操作系统资源,因此,应合理设置应用程序池的【限制超时】和【回收时间间隔】属性。
3 Asp.NetSession共享设置
  Asp.Net提供了以下几种Session保存机制,如表 1所示:
  表 1 Session保存方式
  方式名称
  存储方式
  性能
  Off
  设置为不使用Session功能
  无
  InProc
  设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值
  最高
  StateServer
  设置为将Session存储在独立的状态服务中。通常是aspnet_state.exe进程
  性能损失10-15%
  SQLServer
  设置将Session存储在SQL Server中。
  性能损失10-20%
  Custom
  自定制的存储方案
  由实现方式确定
  在Asp.Net程序的web.config配置文件中对Session的保存方式进行设置。如果不显示指定Session的保存方式,默认使用InProc的方式保存,即Session由提供服务的工作进程保存。
  为了提高IIS对高并发的支持,可以增加应用程序池的工作进程数,IIS会根据内置的调度算法,将用户的请求在多个工作进程间动态分配,如果搭建了服务器集群和负载均衡,则用户请求会在多台机器的多个工作进程间进行动态分配。在上述情况下,如果Session的保存方式依然为InProc,则用户请求在多个工作进程间切换时可能出现Session丢失的情况,导致请求失败或出错。
  为解决上述为,需要将Session的保存方式设置为共享,即表 1中的“StateServer”、“SQLServer”或“Custom”方式。这几种方法中,“SQLServer”方式需要安装独立的SQLServer数据库,“Custom”方式需要自行实现相应的Session存储与检索过程,部署起来相对复杂,相对上述两种方式,“StateServer”方式在功能性和可实施性上最好,因此下文重点介绍此种Session共享机制。
3.1 设置步骤
  1、 确定StateServer服务器。如果只有一台WEB服务器,可指定当前服务器为StateServer服务器。如果存在多台服务器集群,可指定集群中的一台符合较轻的服务器作为StateServer服务器。
  2、 修改注册表,允许远程访问StateServer服务。可直接导入如下脚本。
  
  端口默认为42424,可根据需要进行修改,下文均以42424为例。
  3、 打开【管理工具】-【服务】,找到“Asp.Net State Service”,点击右键,选择【属性】,如图 4所示:
  
  图 4 Asp.Net State Service
  在弹出的【属性】窗口中,将【启动方式】改为“自动”,然后点击【启动】按纽启动服务,如图 5所示:
  
  图 5 启动服务
  4、 打开待修改网站主目录下的web.config配置文件,搜索找到“<sessionstate>”配置节点,如果不存在配置节点,则在“<system.web>”节点下新建“<sessionstate>”配置节点,并将节点属性修改为:
<sessionState mode=&quot;StateServer&quot; stateConnectionString=&quot;tcpip=127.0.0.1:42424&quot; />
其中“tcpip=*”后的主机IP地址和端口可根据实际情况修改。修改完后保存配置文件即可。
3.2 注意事项
  1、 Session中保存的自定义对象必须显示标记为可序列化“[serializable]”。如果未显示标记为可序列化,则在访问页面时会报错。
  2、 StateServer服务器必须为Windows Server操作系统,如Windows Server 2003或Windows Server 2008

  
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-139317-1-1.html 上篇帖子: 先安装VS后安装IIS产生问题的解决 下篇帖子: 使用ssl加密的IIS客户端证书访问配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表