processModel与ASP.NET进程模型
配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置。其作用是配置IIS或IIS中的应用程序池(IIS7及以后版本)的安全性,性能,健壮性,可靠性。
processModel 节只能在 Machine.config 文件中进行设置,它影响服务器上运行的所有 ASP.NET 应用程序。Machine.config文件则位于Windows\Microsoft.NET\Framework64\{.Net Framework Version}\Config或Windows\Microsoft.NET\Framework\{.Net Framework Version}\Config中。
其配置节内容和默认设置如下,查看各个属性的作用可参考https://msdn.microsoft.com/zh-cn/library/7w2sway1(VS.80).aspx


在IIS6中引入了应用程序池,在应用程序池的高级设置中就包含了processModel的设置,其中应用程序标识的配置和idleTimeout的设置在Machine.config和应用程序池高级设置中都存在,但是就以应用程序池的为准了。
如在Machine.config中设置userName和password,
<processModel
userName="Administrator"
password="111" />
通过任务管理器查看进程的

以及通过以下代码查看进程的用户名时均无生效
string GetProcessUserName(int pID)
{
string text1 = null; SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1); try
{
foreach (ManagementObject disk in searcher1.Get())
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null; inPar = disk.GetMethodParameters("GetOwner"); outPar = disk.InvokeMethod("GetOwner", inPar, null); text1 = outPar["User"].ToString();
break;
}
}
catch
{
text1 = "SYSTEM";
} return text1;
}
但是在应用程序池的高级设置中设置则生效


同理,设置闲置超时(idleTimeout)同样都是在应用程序池中设置才生效,在Machine.config中设置超时时间为1分钟,
<processModel
idleTimeout="1"/>
在应用程序池中设置为2分钟

访问站点后留意"任务管理器"中w3wp进程消失的时间,就会发现在静置两分钟后w3wp被结束掉。
经过观察还发现了其他虽然不是重名的属性,但是看其作用相似的,本人未去验证其有效性,但也列举出来
Machine.config ----------- 应用程序池
================================================
shutdownTime --------------- shutdownTImeLimit
pingInterval --------------- pingFrequency
pingResponseTime------------ pingTimeout
webGarden --------------- maxProcesses设置成大于1时
此外单纯出现在Machine.config配置节的属性还是会生效的,例如通过查看应用程序池的线程数量来看对maxWorkerThreads和maxIoThreads是否会生效。
在Machine.config中添加以下设置。
<processModel
autoConfig="false"
maxWorkerThreads="1000"
maxIoThreads="999" />
WebForm页面的Page_Load方法添加以下代码
int work,io;
ThreadPool.GetMaxThreads(out work, out io);
this.lb1.Text += string.Format("<br/> work {0} io {1}",work,io);
运行后发现执行结果如下

这里额外说明一下,如果autoConfig设置成true,它会自动设置maxWorkerThreads和maxIoThreads,如需使用用户自定义设置,则需要设置成false,另外maxWorkerThreads和maxIoThreads是单个CPU中工作线程与IO线程的数量,鄙人的电脑是双核四线程,所以实际运行出来的结果是该设置值的4倍。
关于性能这一方面鄙人参考了微软上面的一篇文章,阅读之后总结了以下几点
1.实际线程池的maxWorkerThreads和maxIoThreads是配置节中
maxWorkerThreads*CPU数
maxIoThreads*CPU数
2.minWorkerThreads最好设置成 minWorkerThreads = maxWorkerThreads / 2
3.单个CPU最多处理的请求数目为 (maxWorkerThreads*number of CPUs)-minFreeThreads,minFreeThreads是httpRuntime配置节的Attribute
4.If you are making one Web service call to a single IP address from each ASPX page。Microsoft 建议您使用以下配置设置︰
•将maxWorkerThreads参数和maxIoThreads参数的值设置为100。
•设置的maxconnection参数的值 12 *N (N是CPU数量)。
•设置的minFreeThreads参数的值 88 *N 和minLocalRequestFreeThreads参数76 *N.
•MinWorkerThreads为50
例如,您有带四个处理器和启用超线程的服务器。根据这些公式,将本文中提到的配置设置使用下列值。
<system.web>
<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
</system.web>
<system.net>
<connectionManagement>
<add address="[ProvideIPHere]" maxconnection="96"/>
</connectionManagement>
</system.net>
参考文章
https://support.microsoft.com/zh-cn/kb/821268
https://msdn.microsoft.com/zh-cn/library/7w2sway1(VS.80).aspx
https://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel
processModel与ASP.NET进程模型的更多相关文章
- IIS 之 Web 服务器上的 ASP.NET 进程模型设置
配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置. processModel 节只能在 Machine.config 文件中进行设置, ...
- ASP.NET路由模型解析
大家好,我又来吹牛逼了 ~-_-~ 转载请注明出处:来自吹牛逼之<ASP.NET路由模型解析> 背景:很多人知道Asp.Net中路由怎么用的,却不知道路由模型内部的运行原理,今天我就给大家 ...
- Asp.net管道模型(管线模型)
Asp.net管道模型(管线模型) 前言 为什么我会起这样的一个标题,其实我原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料,而收获比当初预 ...
- ASP.NET编程模型之ASP.NET页面生命周期图解
ASP.NET编程模型中ASP.NET页面生命周期是指什么呢?它包括什么呢?ASP.NET编程模型之ASP.NET页面生命周期具体的过程有哪些呢?下面就开始我们的讲解吧: ASP.NET 页运行时,此 ...
- Asp.net管道模型(管线模型)之一发不可收拾
前言 为什么我会起这样的一个标题,其实我原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料,而收获比当初预想的大了很多. 有本篇作基础,下面两篇就 ...
- Nginx-->基础-->理论-->nginx进程模型
一.nginx的进程模型基础 如上图,是nginx的基本进程模型. 1.nginx的master进程与worker进程关系 nginx的master进程负责worker进程的管理,包括创建worker ...
- 由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求。错误: 0x80131902
由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求.错误: 0x80131902 分类: c#2013-06-17 10:22 89人阅读 评论(0) 收藏 举报 ASP.NE ...
- linux进程模型总结
Linux进程通过一个task_struct结构体描述,在linux/sched.h中定义,通过理解该结构,可更清楚的理解linux进程模型. 包含进程所有信息的task_struct数据 ...
- ASP.NET MVC模型绑定的6个建议(转载)
ASP.NET MVC模型绑定的6个建议 发表于2011-08-03 10:25| 来源博客园| 31 条评论| 作者冠军 validationasp.netmvc.netasp 摘要:ASP.NET ...
随机推荐
- 拥抱.NET Core,学习.NET Core的基础知识补遗
前言 .NET Core的新特性之一就是跨平台,但由于对之前框架的兼容导致编写一个.NET Core类库变得相当复杂,主要体现为相当多的框架目标和支持平台,今天我们就对.NET Core的跨平台特性进 ...
- 基于Redis的开源分布式服务Codis
Redis在豌豆荚的使用历程--单实例==>多实例,业务代码中做sharding==>单个Twemproxy==>多个Twemproxy==>Codis,豌豆荚自己开发的分布式 ...
- ReactJS入门(三)—— 顶层API
本文基本跟着官方文档把API都走一遍,但会有实例来解释应该怎么用,木有比我更详细的API文档咯. React.createClass 参数:CONFIG(object) 创建一个ReactClass( ...
- 【读书笔记】Asp.Net MVC 上传图片到数据库(会的绕行)
之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存url了.而且这种方式支持ie6(ie6不支持jquery自动提交fo ...
- MySQL 对比数据库表结构
200 ? "200px" : this.width)!important;} --> 介绍 本章主要介绍怎样对比数据库的表结构的差异,这里主要介绍使用mysqldiff工具 ...
- [ASP.NET MVC 小牛之路]02 - C#知识点提要
本人博客已转移至:http://www.exblr.com/liam 本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在 ...
- 仿h5拖拽
在h5中有个拖拽的声明式命令,就如html属性一样,简单强大. 而在网页上拖拽的功能还是需求很大的,所以对这方面应该去仔细了解一下. 所以仿一一下它的实现.只是仿了它的复制一份到目标容器的功能.它还有 ...
- 【已解决】WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址。某些功能已被禁用
先看警告 再看错误信息 计算机管理打不开就==>Win+R ==>compmgmt.msc 发现,dnt在管理员权限组里面,也在Hyper-V权限组里面 看看Hyper-V的驱动有木有被禁 ...
- Javascript算法系列之快速排序(Quicksort)
原文出自: http://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/ https://gis ...
- 应用程序框架实战二十二 : DDD分层架构之仓储(层超类型基础篇)
前一篇介绍了仓储的基本概念,并谈了我对仓储的一些认识,本文将实现仓储的基本功能. 仓储代表聚合在内存中的集合,所以仓储的接口需要模拟得像一个集合.仓储中有很多操作都是可以通用的,可以把这部分操作抽取到 ...