配置 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进程模型的更多相关文章

  1. IIS 之 Web 服务器上的 ASP.NET 进程模型设置

    配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置. processModel 节只能在 Machine.config 文件中进行设置, ...

  2. ASP.NET路由模型解析

    大家好,我又来吹牛逼了 ~-_-~ 转载请注明出处:来自吹牛逼之<ASP.NET路由模型解析> 背景:很多人知道Asp.Net中路由怎么用的,却不知道路由模型内部的运行原理,今天我就给大家 ...

  3. Asp.net管道模型(管线模型)

    Asp.net管道模型(管线模型)   前言 为什么我会起这样的一个标题,其实我原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料,而收获比当初预 ...

  4. ASP.NET编程模型之ASP.NET页面生命周期图解

    ASP.NET编程模型中ASP.NET页面生命周期是指什么呢?它包括什么呢?ASP.NET编程模型之ASP.NET页面生命周期具体的过程有哪些呢?下面就开始我们的讲解吧: ASP.NET 页运行时,此 ...

  5. Asp.net管道模型(管线模型)之一发不可收拾

    前言 为什么我会起这样的一个标题,其实我原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料,而收获比当初预想的大了很多. 有本篇作基础,下面两篇就 ...

  6. Nginx-->基础-->理论-->nginx进程模型

    一.nginx的进程模型基础 如上图,是nginx的基本进程模型. 1.nginx的master进程与worker进程关系 nginx的master进程负责worker进程的管理,包括创建worker ...

  7. 由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求。错误: 0x80131902

    由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求.错误: 0x80131902 分类: c#2013-06-17 10:22 89人阅读 评论(0) 收藏 举报 ASP.NE ...

  8. linux进程模型总结

    Linux进程通过一个task_struct结构体描述,在linux/sched.h中定义,通过理解该结构,可更清楚的理解linux进程模型.       包含进程所有信息的task_struct数据 ...

  9. ASP.NET MVC模型绑定的6个建议(转载)

    ASP.NET MVC模型绑定的6个建议 发表于2011-08-03 10:25| 来源博客园| 31 条评论| 作者冠军 validationasp.netmvc.netasp 摘要:ASP.NET ...

随机推荐

  1. SQL Server 2016 CTP2.3 的关键特性

    SQL Server 2016 CTP2.3 的关键特性 数据库方面的增强 Row Level Security已经支持In-memory OLTP 表.用户现在可以对内存优化表实施row-level ...

  2. EasyPR--一个开源的中文车牌识别系统

    我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...

  3. 用java开发微信公众号:测试公众号与本地测试环境搭建(一)

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  5. java compiler level does not match the version of the installed java project facet 解决方案

    项目出现 java compiler level does not match the version of the installed java project facet 错误,一般是项目移植出现 ...

  6. 使用JAVA编写电话薄程序,具备添加,查找,删除等功能

    //该程序需要连接数据库.根据word文档要求所有功能均已实现.//大部分方法基本差不多,//在查询修改的时候能输出 最大ID号 和最小ID号,并且可以对输入的ID号进行判断是否存在(具体方法请查看 ...

  7. iOS常见用户头像的圆形图片裁剪常见的几种方法

    在开发中,基本上APP的用户头像的处理都需要把用户所上传的方形图片,处理为圆形图片.在这里就总结三种常见的处理圆形图片的方法. 1.使用位图上下文 2.使用UIView的layer进行处理 3.使用r ...

  8. C#实现哥德巴赫猜想

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Goet ...

  9. JSON和JS对象之间的互转

    1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的 ...

  10. tn文本分析语言(三):高级语法

    标签(空格分隔): 未分类 高级操作 1.脚本表达式 用双引号包含的脚本被称为脚本表达式,目前支持嵌入Python. 脚本表达式只能在顺序表达式中使用.代码可以在三个位置存在: |位置|功能|例子| ...