IIS相关优化
1.修改IIS工作进程的最大数量。
A.请考虑以下几点:
1.每个工作进程都会消耗系统资源和CPU占用率;工作进程过多会导致系统资源和CPU利用率的急剧消耗;
2.每个工作进程都有自己的状态数据。如果Web应用程序依赖工作进程来保存状态数据,它可能不支持使用多个工作进程。
3.资源竞争,让多个工作进程运行同一个应用会造成资源竞争。
b、修改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 \配置\机器。配置
Set the "Allow Definition" value of the "Process Model" node to "Everywhere"
修改服务器中iis工作进程的最大数量:
方法:右键单击iis应用程序池-属性-性能选项卡-web Garden-最大工作进程数。
注意:经过测试验证,当服务器有32(16*2)个内核的32G内存时,设置为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等,另外还包括Method(方法), UserAgent(用户代理)等。
这些记录不但占用大量的磁盘空间还大大地影响了web服务器的性能。有人做过评测,停止IIS访问记录可以提升5%到8%的web性能。
2.方法:打开IIS管理器,定位到具体的web站点,右键点击选择“属性”,在“主目录”选项卡下取消对“记录访问”的勾选即可
Web.config配置优化(生产环境)
1.去除无用HttpModules
d.并不是所有的Modules都是必需的,去除不用的HttpModules可以提高请求速度
1.asp.net默认的HttpModules管理请求的管线控制每一个请求。
例如:SessionStateModule拦截每一个请求,分析session cookie 来加载HttpContext中的合适的session.但是并不是所有的Modules都是必需的,
比如:如果你不用membership的话,就不用配置FormsAuthentication模块;如果你不用windows身份验证就不用配置WindowsAuthentication,
这些模块只是包含在管线里面,为每一个请求执行一些并不是必须的代码。
2.默认的模块定义在machine.config中(在网站的web.config中设置表示当前网站有效)($WINDOWS$\Microsoft.NET\Framework\$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
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设置为非Off状态
Web.config中的customErrors节点用于定义一些自定义错误信息的信息。此节点有Mode和defaultRedirect两个属性,其中defaultRedirect属性是一个可选属性,
表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误。Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下:
Mode 说明
On 表示在本地和远程用户都会看到自定义错误信息。
Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
这里有必要说明一下本地用户和远程用户的概念。当我们访问asp.net应用程时所使用的机器和发布asp.net应用程序所使用的机器为同一台机器时成为本地用户,反之则称之为远程用户。
在开发调试阶段为了便于查找错误Mode属性建议设置为Off,而在部署阶段应将Mode属性设置为On或者RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵。
配置如下:
customErrors mode=' On ' defaultRedirect='Error.html'/
4. 禁用调试
Web.config中的compilation节点配置ASP.NET 使用的所有编译设置。默认的debug属性为“true”,即允许调试,在开发阶段这样配置没有问题。但正式部署上线后,
这样会影响支撑接口的性能,所以在程序编译完成上线之后应将其设为“false”。
配置如下:
compilation debug='false' /
5. 连接并发配置
连接并发数限制是指对于同一个ip对同一个domain发起的最大连接数。其实在大多数微软的产品或组件中都存在这个限制,一般这个数值是2/4个,也就是说在默认情况下,
对于同一个ip访问同一个domain同时最多有2个连接处于建立状态。默认是2,这个值太低了。这意味着每一个IP最多只能有两个请求到你的网站,这样会造成请求拥堵。
asp.net中connectionManagement节点可以设置单个ip对同某个domain发起的最大连接数。
配置如下:
system.net
connectionManagement
add address='*' maxconnection='100'/
/connectionManagement
/system.net
address代表针对哪个domain,maxconnection代表最大连接数。
6. 去掉http头信息中的ASP.NET 版本标头
enableVersonHeader:指定ASP.NET 是否应输出版本标头。使用该属性来确定当前使用的ASP.NET 版本。对于生产环境,该属性不是必需的,可以禁用。
配置示例:
httpRuntime enableVersionHeader='false' /