服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

IIS服务器与web.config配置优化指南


发布日期:2023年06月18日
 
IIS服务器与web.config配置优化指南

修改IIS最大工作进程数

a 请考虑以下几点

每一个工作进程都会消耗系统资源和CPU占用率太多的工作进程会导致系统资源和CPU利用率的急剧消耗
每一个工作进程都具有自己的状态数据如果Web应用程序依赖于工作进程保存状态数据那么可能不支持使用多个工作进程
成资源竞争让多个工作进程运行同一个应用程序会造成资源竞争
b 修改ISS最大工作进程数提高该应用程序池处理请求的性能
在IIS 的Web园(Web Garden)中指定用于某个应用程序池的工作进程的数量就可以提高该应用程序池处理请求的性能当服务器的负载较小不需要额外的工作进程时IIS 在一定的时间后(默认分钟可配置)自动缩减实际的工作进程数量如果负载变大需要额外的工作进程IIS 再次增加工作进程数量这一切操作都自动进行不需要管理员干预
修改方法如下
修改服务器net framework的machineconfig的配置
目录C:WINDOWSMicrosoftNETFrameworkvCONFIGmachineconfig
将其中的“processModel”节点的“allowDefinition”值设置为“Everywhere”
修改服务器中的iis最大工作进程数:
方法右击iis应用程序池 > 属性 > “性能”选项卡 > web园 > 最大工作进程数
经测试验证服务器为*)核G内存时设置为性能最优
(PS: processModel 元素(ASPNET 设置架构) 元素配置用于服务器(包括服务器上的所有 ASPNET 应用程序)的处理模型因此processModel 设置只能放在 Machineconfig 文件中而且不能被任何 Webconfig 文件中的设置重写 )
取消IIS的web访问记录
a 关闭IIS访问记录可以提升web性能
IIS默认开启对于web的IIS访问记录当开启记录功能后IIS会事无巨细地忠实记录所有的IIS访问记录这些记录文件的内容是非常庞杂的比如访问时间客户端IP从哪个链接访问 Cookies等另外还包括 Method(方法) UserAgent(用户代理)等
这些记录不但占用大量的磁盘空间还大大地影响了web服务器的性能有人做过评测停止IIS访问记录可以提升%到%的web性能
方法打开IIS管理器定位到具体的web站点右键点击选择“属性”在“主目录”选项卡下取消对“记录访问”的勾选即可
Webconfig配置优化(生产环境)
去除无用HttpModules
d 并不是所有的Modules都是必需的去除不用的HttpModules可以提高请求速度
aspnet默认的HttpModules管理请求的管线控制每一个请求
例如SessionStateModule拦截每一个请求分析session cookie 来加载HttpContext中的合适的session但是并不是所有的Modules都是必需的比如如果你不用membership的话就不用配置FormsAuthentication模块如果你不用windows身份验证就不用配置WindowsAuthentication这些模块只是包含在管线里面为每一个请求执行一些并不是必须的代码
默认的模块定义在machineconfig中(在网站的webconfig中设置表示当前网站有效)($WINDOWS$MicrosoftNETFramework$VERSION$CONFIG)如果不需要这些管线的话配置如下


代码如下:
<httpModules>
<!去除不必要的节点提高请求速度>
<remove name="OutputCache" />
<remove name="Session" />
<remove name="WindowsAuthentication" />
<remove name="FormsAuthentication" />
<remove name="PassportAuthentication" />
<remove name="RoleManager" />
<remove name="UrlAuthorization" />
<remove name="FileAuthorization" />
<remove name="AnonymousIdentification" />
<remove name="Profile" />
</httpModules>

关闭页面级无用机制
Webconfig中的<pages>节点配置全局定义页特定设置如配置文件范围内的页和控件的 ASPNET 指令默认enableViewState属性为“true”即开启视图如果不使用这个机制就可以设置为“false”
默认autoEventWireup属性为“true”即开启页事件如果不使用这个机制就可以设置为“false”
默认buffer属性为“true”即开启 HTTP 响应缓沖
默认enableViewStateMac属性为“false”开启对页的视图状态运行计算机身份验证检查 (MAC)以放置用户篡改如果设置为true将会引起性能的降低
默认validateRequest默认为true开启验证用户输入中有跨站点脚本攻击和SQL注入式漏洞攻击如果出现匹配情况就会发 HttpRequestValidationException 异常
将CustomError设置为非Off状态
Webconfig中的<customErrors>节点用于定义一些自定义错误信息的信息此节点有Mode和defaultRedirect两个属性其中defaultRedirect属性是一个可选属性表示应用程序发生错误时重定向到的默认URL如果没有指定该属性则显示一般性错误Mode属性是一个必选属性它有三个可能值它们所代表的意义分别如下
Mode 说明
On 表示在本地和远程用户都会看到自定义错误信息
Off 禁用自定义错误信息本地和远程用户都会看到详细的错误信息
RemoteOnly 表示本地用户将看到详细错误信息而远程用户将会看到自定义错误信息
这里有必要说明一下本地用户和远程用户的概念当我们访问aspnet应用程时所使用的机器和发布aspnet应用程序所使用的机器为同一台机器时成为本地用户反之则称之为远程用户在开发调试阶段为了便于查找错误Mode属性建议设置为Off而在部署阶段应将Mode属性设置为On或者RemoteOnly以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵
配置如下


代码如下:
<customErrors mode=" On " defaultRedirect="Errorhtml"/>

禁用调试
Webconfig中的<compilation>节点配置 ASPNET 使用的所有编译设置默认的debug属性为“true”即允许调试在开发阶段这样配置没有问题但正式部署上线后这样会影响支撑接口的性能所以在程序编译完成上线之后应将其设为“false”
配置如下


代码如下:
<compilation debug="false" />

连接并发配置
连接并发数限制是指对于同一个ip对同一个domain发起的最大连接数其实在大多数微软的产品或组件中都存在这个限制一般这个数值是/也就是说在默认情况下对于同一个ip访问同一个domain同时最多有个连接处于建立状态默认是这个值太低了这意味着每一个IP最多只能有两个请求到你的网站这样会造成请求拥堵aspnet中connectionManagement节点可以设置单个ip对同某个domain发起的最大连接数
配置如下


代码如下:
<systemnet>
<connectionManagement>
<add address="*" maxconnection="" />
</connectionManagement>
</systemnet>

address代表针对哪个domainmaxconnection代表最大连接数
去掉http头信息中的ASPNET 版本标头
enableVersonHeader指定 ASPNET 是否应输出版本标头使用该属性来确定当前使用的 ASPNET 版本对于生产环境该属性不是必需的可以禁用
配置示例


代码如下:
<httpRuntime enableVersionHeader="false" />

上一篇:asp.net用代码压缩服务器上文件夹或文件

下一篇:“/”应用程序中的服务器错误及解决方法