本文将在ASP.NET分享一些iis的优化和web.config配置的优化。
IIS相关优化
1.修改IIS工作进程的最大数量。
A.请考虑以下几点:
1.每个工作进程都会消耗系统资源和CPU利用率;工作进程过多会导致系统资源和CPU利用率的急剧消耗;
2.每个工作进程都有自己的状态数据。如果Web应用程序依赖工作进程来保存状态数据,它可能不支持使用多个工作进程。
3.资源竞争,多个工作进程运行同一个应用会造成资源竞争。
修改ISS工作进程的最大数量,以提高该应用程序池处理请求的性能。
1.在IIS 6.0的Web garden中,为应用程序池指定工作进程的数量可以提高应用程序池处理请求的性能。当服务器负载较小时,不需要额外的工作进程时,IIS 6.0会在一定时间后(默认20分钟,可配置)自动减少工作进程的实际数量;如果负载增加并且需要额外的工作进程,IIS 6.0将再次增加工作进程的数量。所有这些都是自动完成的,无需管理员干预。
2.修改方法如下:
修改服务器的machine.config的配置。net框架
目录:c:\ windows \ microsoft.net \ framework 64 \ v 2 . 0 . 50727 \ config \ machine . config
将“processModel”节点的“allowDefinition”值设置为“Everywhere”
修改服务器中iis工作进程的最大数量:
方法:右键单击iis应用程序池-属性-性能选项卡-web garden-最大工作进程数。
注意:经过测试和验证,当服务器拥有32个(16*2)内核和32 GB内存时,将其设置为5具有最佳性能。
(PS:processModel元素(ASP.NET设置模式)元素为服务器配置处理模型(包括服务器上的所有ASP.NET应用程序)。因此,processModel设置只能放在Machine.config文件中,不能被任何Web.config文件中的设置覆盖。)
2.取消IIS的web访问记录
A.关闭IIS访问记录可以提高web性能
1.iis6.0默认情况下打开网站的iis访问记录。当登录功能打开时,IIS将如实记录所有IIS访问记录的每一个细节。这些记录文件的内容非常复杂,比如访问时间、客户端IP、访问哪个链接、Cookies等。还包括方法、用户代理等。
这些记录不仅会占用大量的磁盘空间,还会极大地影响web服务器的性能。据评估,停止IIS访问记录可以提高web性能5%到8%。
2.方法:打开IIS管理器,找到特定的网站,右键单击并选择属性,取消选中主目录选项卡下的记录访问。
Web.config配置的优化(生产环境)
1.删除无用的http模块
D.并非所有模块都是必需的。移除未使用的HttpModules可以提高请求速度。
1.asp.net的默认HttpModules管理请求管道控制每个请求。
例如,sessionStateModule截获每个请求,分析会话cookie以在HttpContext中加载适当的会话。但并不是所有的模块都是必须的,比如不使用成员资格,就不需要配置FormsAuthentication模块;如果不使用windows身份验证,则不需要配置windows Authentication。这些模块只是包含在管道中,为每个请求执行一些不必要的代码。
2.默认模块在machine.config中定义(网站的web.config中的设置表示当前网站有效)($ windows $ \ microsoft.net \框架\ $ version $ \ config)。如果不需要这些管道,配置如下:
http模块
!-删除不必要的节点,提高请求速度-
remove name='OutputCache' /
remove name='Session' /
remove name=' windows authentication '/
remove name=' forms authentication '/
remove name=' PassportAuthentication '/
remove name='RoleManager' /
remove name='UrlAuthorization' /
remove name=' file authorization '/
remove name=' anonymous identification '/
remove name='Profile' /
/http模块
2.关闭页面级无用机制。
Web.config中的Pages节点配置全局定义的特定于页的设置,例如配置文件范围内的页和控件的ASP.NET指令。enableviewstate的默认属性为“true”,即视图已打开。如果不使用这个机制,可以设置为“false”。
autoEventWireup的默认属性为“true”,即打开页面事件,如果不使用该机制,可以设置为“false”。
默认的buffer属性为“true”,即打开HTTP响应缓冲。
enableViewStateMac的默认属性为“false”。打开页面的视图状态并运行计算机身份验证检查(MAC)来放置用户篡改。如果设置为true,会导致性能下降。
validateRequest的默认值默认为true,开启跨站点脚本攻击和SQL注入漏洞攻击来验证用户的输入。如果匹配,将发送一个HttpRequestValidationException异常。
3.将CustomError设置为非关闭状态
Web.config中的customErrors节点用于定义一些自定义错误信息。这个节点有两个属性,Mode和defaultRedirect。defaultRedirect属性是一个可选属性,它指示发生错误时应用程序将被重定向到的默认URL。如果未指定该属性,将显示一个常规错误。模式属性是必需的属性。它有三个可能的值,它们代表的含义如下:
模式描述
On表示本地和远程用户都将看到自定义错误消息。
禁用自定义错误消息,本地和远程用户将会看到详细的错误消息。
Only意味着本地用户将看到详细的错误信息,而RemoteOnly用户将看到自定义的错误信息。
这里有必要解释一下本地用户和远程用户的概念。当用于访问ASP.NET应用程序的机器与用于发布ASP.NET应用程序的机器相同时,我们就成为本地用户,反之亦然,我们称之为远程用户。在开发调试阶段,为了发现错误,建议将Mode属性设置为Off,而在部署阶段,要将Mode属性设置为On或RemoteOnly,以防止这些详细的错误消息暴露程序代码的细节,从而导致黑客的入侵。
配置如下:
customErrors mode=' On ' default redirect=' error . html '/
4.禁用调试
Web.config中的编译节点配置ASP.NET使用的所有编译设置。的默认调试属性为“true”,即允许调试。这个配置在开发阶段是没有问题的。但这样会影响支持接口正式上线部署后的性能,所以程序编译上线后要设置为“false”。
配置如下:
编译调试='false' /
5.连接并发配置
连接并发限制是指针对同一ip向同一域发起的最大连接数。事实上,这种限制存在于大多数微软产品或组件中。一般这个值是2/4。也就是说,默认情况下,对于同一个ip访问同一个域,最多同时建立两个连接。默认值为2,这太低了。这意味着每个IP最多只能有两个对你网站的请求,会造成请求拥塞。ASP.NET的connectionManagement节点可以设置单个ip向同一个域发起的最大连接数。
配置如下:
system.net
连接管理
add address=' * ' max connection=' 100 '/
/连接管理
/system.net
Address代表哪个域,maxconnection代表最大连接数。
6.从http头信息中删除ASP.NET版本头。
EnableVersonHeader:指定ASP.NET是否应输出版本头。使用该属性确定当前使用的ASP.NET版本。对于生产环境,此属性不是必需的,可以禁用。
示例配置:
httpRuntime enableVersionHeader=' false '/