`
lovnet
  • 浏览: 6704817 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

web.config优化网站性能设置

阅读更多

asp.net2.0有许多一旦你发现了就会大幅提高性能和扩展性的秘密。比如:在membership和Profile provider 中就有快速实现验证和授权的秘密。此外:Asp.net的http管道可以避免每个请求中的不必要代码。还不只是这些,asp.net的线程可以充分发挥性能。浏览器的页面片断缓存机制(不是服务器缓存)可以在反复的访问中节约下载时间。在界面加载完成后给你的网站提供快速流畅的体验。最后,CDN和适当的使用http缓存头可以使你的网站访问飞快。这篇文章中,你可以学到一些提高你的asp.net网站性能的技巧。

我们要讨论的问题:
》管线最佳优化
》asp.net过程最佳处理
》进行之前要对asp.net做的事情
》内容传送网络
》在浏览器中缓存AJAX请求
》优化缓存机制
》优化页面装载速度提高用户体验
》尽可能的优化ASP.net 2.0的profile provider.
》在不布置网站的情况下如何查询membership表
》DOS攻击
以上技巧可用于任何基于asp.net 2.0的网站,尤其是使用了membership和profile provider的网站。
1.管线最佳优化
一些asp.net默认的HttpModules管理请求的管线并且每一个请求。例如:SessionStateModule拦截每一个请求,分析session cookie 来加载HttpContext中的合适的session.但是并不是所有的Modules都是必需的,比如:如果你不用membership的话,就不用配置FormsAuthentication模块;如果你不用windows身份验证就不用配置WindowsAuthentication,这些模块只是包含在管线里面,为每一个请求执行一些并不是必须的代码。默认的模块定义在machine.config中($WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG)
如下所示:
<httpModules>
<addname="OutputCache"type="System.Web.Caching.OutputCacheModule"/>
<addname="Session"type="System.Web.SessionState.SessionStateModule"/>
<addname="WindowsAuthentication"
type="System.Web.Security.WindowsAuthenticationModule"/>
<addname="FormsAuthentication"
type="System.Web.Security.FormsAuthenticationModule"/>
<addname="PassportAuthentication"
type="System.Web.Security.PassportAuthenticationModule"/>
<addname="UrlAuthorization"type="System.Web.Security.UrlAuthorizationModule"/>
<addname="FileAuthorization"type="System.Web.Security.FileAuthorizationModule"/>
<addname="ErrorHandlerModule"type="
System.Web.Mobile.ErrorHandlerModule,
System.Web.Mobile, Version=1.0.5000.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
</httpModules
>

如果你想去掉这些默认的设置,只需要在你的web.config里加入<remove>节点。
<httpModules>
<!--去除不必要的节点,提高请求速度-->
<removename="Session"/>
<removename="WindowsAuthentication"/>
<removename="PassportAuthentication"/>
<removename="AnonymousIdentification"/>
<removename="UrlAuthorization"/>
<removename="FileAuthorization"/>
</httpModules
>
上面的配置适用于基于数据库的form认证并且不需要任何session支持的网站。所以这些节点可以被删除。
2.asp.net进程配置优化
asp.net进程模型进行一些进程级别设置,比如asp.net使用多少线程,超时时间,多少请求等待输入输出工作的完成等等。默认情况下有很多限制。现在硬件越来越便宜,G级内存的服务器普遍存在,所以现在进程配置的优化可以得到更多的系统资源和扩展。
一般情况下,asp.net的mashine.config的配置是这样的:
<system.web>
<processModelautoConfig="true"/>
</system.web>
你应该改变这样的配置,用一些值设置不同的属性来定制asp.net线程的工作方式。如下所示:
<processModel
enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="00:00:05"
requestLimit="Infinite"
requestQueueLimit="5000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="00:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseDeadlockInterval="00:03:00"
responseRestartDeadlockInterval="00:03:00"
autoConfig="false"
maxWorkerThreads="100"
maxIoThreads="100"
minWorkerThreads="40"
minIoThreads="30"
serverErrorMessageFile=""
pingFrequency="Infinite"
pingTimeout="Infinite"
asyncOption="20"
maxAppDomains="2000"
/>
除了下面的值外都是一些默认值:
maxWorkerThreads:默认每个进程是20个线程。在双核的服务器上,系统会分配40个线程给asp.net,这就意味着asp.net在双核服务器上同时可以处理40个并发请求。为了给asp.net的每个进程增加线程,我曾经设置过100.如果你的应用的CPU强劲而且有更多的请求需要,你可以设置这个属性。特别是你的网络就用使用了大量的webservice或者上传/下载大量数据这些不会把压力转到CPU上的时候。当asp.net用完了所有的线程,它会停止接收更多的响应。请求会排成队列等待直到其它工作中的线程被释放。这种情况经常发生在网站接收到超出预期的点击的时候,这种情况下,如果你有备用的CPU,请增加进程的线程数量。
maxIOThreads:默认是20个。双核服务器中系统会提供40个I/O线程给ASP.net.I/O请求可以用于网站的文件读写,数据库读取,webservice调用,http请求等等。你可以把它设置的更高一点,特别是在你的网站做并发的上传/下载和webservice调用的时候。
minWorkerThreads:当asp.net自由工作线程低于这个值时,asp.net会推送一些请求进入队列。所以你可以设置一个低值来增加当前的请求数量。当然这个值不能设置的太低,因为网站要做一些后台处理和并行处理,这些工作都是需要一些线程来运行的。
minIOThreads:和minWorkerThreads相当,只不过是针对I/O进程进行的设置。它可以设置的比in case of 低,因为I/O并行处理线程没有什么问题。
memoryLimit:指定最大的内存使用大小。它指定的是占所有系统内存的百分比,是指定系统处理进程时可以使用的最大内存数。如果服务器上只有你自己的网站而且没有其它的使用内存的进程,你可以把它设置的高一些,比如:80.如果你的网站存在内存泄露问题,你最好把这个值设置的低一点,这样泄露的内存不久就会释放出来,这样会保持网站的正常运行。特别是你在使用COM组件造成内存泄露的时候。当然这只是个临时方案,最终你还是要解决这个内存泄露的问题。
除了processModel之外,asp.net还可以设置单一IP最大的请求数量:
<system.net>
<connectionManagement>
<addaddress="*"maxconnection="100"/>
</connectionManagement>
</system.net>
默认是2,这个值太低了。这意味着每一个IP最多只能有两个请求到你的网站,这样会造成请求拥堵。这里设置成了100,当然有必要的话,你可以设置得更高。

分享到:
评论

相关推荐

    铱迅网站防火墙(Web应用防火墙) 1.2.02.zip

    ★超高速黑客攻击数据包检测引擎 ,100%优化性能高速检测引擎,100Mbps下,CPU消耗,每秒可处理15000 个报文 ★特色功能 支持IIS、Apache、Websphere等所有Web服务器 防止URL SQL注入、群注、XSS跨站 防止...

    增加asp.net应用程序性能的20种方法(简单有效)

    1.禁用session假如您用不到session会话跟踪请...当然您可以在web.config应用程序配置设置中设计&lt;sessionState&gt;mode的值为Off. 2.输出缓冲设置这个方法对你的应用很有帮助.asp.net应用程序基本上在服务器端批量生成数据

    SQL查询安全性及性能优化

    示例:在Web.config文件中设置 &lt;customErrors mode="On" defaultRedirect="error.aspx"&gt; 限制访问数据库账号的权限 在开发应用系统的时候就应该限制,给程序最小访问数据库的权限 使用参数命令传递参数 不要...

    Web2.0社区平台源码

     SpaceBuilder v2.3根据多个客户千万级站点的考验并结合性能测试数据,为了应对大数据量高并发站点对底层重新做了优化,使SpaceBuilder可以更好的实现分布式部署,为面向高端做好了准备。本次优化主要体现在以下几...

    开启SQLSERVER数据库缓存依赖优化网站性能

    很多时候,我们服务器的性能瓶颈会是在... 那么如何开启SQLSERVER数据库缓存依赖,方法如下: 第一步:修改Web.Config的节的配置,代码如下,让网站项目启用SqlCacheDependency。注意下面代码中的connectionStringNa

    IBatisNet完整项目源码(含数据库)

    系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。 2.iBATIS之于小型、简单系统:非常适用 iBATIS自己就很小并且简单 iBATIS不会...

    IBatisNet.DataMapper 之简单三层

    系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。 2.iBATIS之于小型、简单系统:非常适用 iBATIS自己就很小并且简单 iBATIS不会对...

    DTcms_50_sql_src最新旗舰版带手机和微信公众号设置

    一、系统描述 1、大数据 云存储 DTcms 5.0...3、找到网站目录下的“Web.config”文件,找到“connectionStrings”节点,将其更改为: 您的数据库IP;uid=数据库登录用户名;pwd=数据库登录密码;database=数据库名称;"/&gt;

    DotBBS V2.1源码

    16 DotBBS.config与Web.config合并 17 更换编辑器,能比较好的兼容浏览器,上传文件能以自动重命名 18 SqlServer版数据库,表增加了描述,方便二次开发 19 更换后台界面 20 论坛默认主目录,放到根目录,方便搜索...

    asp.net博客系统

    然后修改程序web.config的数据库连接字符串,有两个地方,一个在节点内,一个在节点内,这个就不多说了 【管理员帐户配置】:默认帐号/密码:51aspx/51aspx 也可以运行web/tools下的Encrypt.aspx,输入自定义...

    给力论坛源码 标注:用iis访问就会有样式

    官方支持:http://www.dotbbs.net/bbs , DotBBS包括Access版和Sql Server版,可以在Web.config中设置。 DotBBS 是 前沿网络 WWW.cnQianyan.Com 旗下产品;正版购买,请联系 前沿网络科技团队 ,QQ:27029363 EMail:...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...

    webpack+react+antd脚手架优化的方法

    在之前的文章中了解了webpack v4的特性,现在将知识用于实践,对之前写的一个react脚手架进行打包性能的优化。 优化类目 样式分离 第三方资源分离 区分开发环境 热更新 提取公共代码 1. CSS分离 npm install ...

    crossphp 开发框架 v1.6.1.zip

    欢迎各种性能对比测试。 三. 安装 通过 http://localhost/skeleton/htdocs/web 来访问默认的web页面 正常访问 http://localhost/skeleton/htdocs/admin, 需要修改你的数据库配置skeleton/config/db.config.php,并...

    munee-master资源优化PHP库.zip

    图片压缩裁剪,CSS,JS 文件合并和 minified,这些工作是网站开发中,必不可少的,但是这些工做如果都是自己来处理,会非常麻烦,所以今天就推荐一个用于优化图片,CSS,JS 等网站附件的全功能 PHP 类库:Munee。...

    F-CMS Flash整站系统[Flash CMS] v2.0

    网站Flash风格智能设置,后台可设置Flash的颜色风格、右键菜单等... 3.会员系统功能,可实现会员注册、修改资料,会员管理等... 可设置栏目内容的浏览权限(设置栏目为指定会员等级浏览)。 4.在线商城: (1). ...

    nuxt-webfontloader:高效的Web字体加载从未如此简单!

    通过异步加载Web字体来提高网站性能 Nuxt 2(仅Nuxt 2)支持 经过全面测试! 建立 使用yarn或npm将nuxt-webfontloader添加为依赖项到您的项目 添加nuxt-webfontloader到modules的部分nuxt.config.js { modules : ...

    F-CMS Flash网站管理系统[F-CMS Flash CMS] V2.0.rar

     如果网站安装在域名下的子目录需修改‘public/Config.asp’文件中‘WebRelativePath’变量的值,  比如:网站安装在域名下的‘myDirectory’目录则修改为:WebRelativePath = "/myDirectory/";如果安装在域名根...

Global site tag (gtag.js) - Google Analytics