知识大全 ASP.NET性能提升秘诀之管道与进程优化

Posted

篇首语:时人不识凌云木,直待凌云始道高。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET性能提升秘诀之管道与进程优化相关的知识,希望对你有一定的参考价值。

ASP.NET性能提升秘诀之管道与进程优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  ASP NET 中包涵了很多秘密 当你发现它时 可以为你的程序带来更大的性能和扩展性提升 例如 了解了在Membership和Profile provider提供程序中所隐藏的秘密瓶颈后就可以方便地的解决验证问题并使得授权操作的速度加快

  另外 ASP NET HTTP管道为了避免针对每次请求所要执行的必要代码而发生阻塞 不仅那样 ASP NET工作者进程能够推动其限制而获得更高的性能 页面碎片在浏览器端的输出缓存(不是在服务器端)可以显著节约回访者的下载时间 按需求的用户界面下载可以让你的站点给人快速流畅的感觉

  最后内容传输网络和HTTP缓存头的恰当使用可以让你的网站惊人的快速 在这篇文章中 你将学习到这些技术 它能够使你的ASP NET应用程序获得更高的性能 更好的扩展性 并且可以在任何ASP NET的网站上实现 尤其是那些应用了ASP NET Membership 和Profile provider的站点

  ASP NET管道优化

  位于请求管道中的很多ASP NET默认的HttpModules用于拦截客户端所发出的每个请求 例如 SessionStateModule拦截每个请求 并解析对应的会话cookie 然后在HttpContext中加载适当的会话 实时证明 并不是所有的modules都是必要的

  例如 如果你不使用Membership和Profile provider提供程序 那么你就可以不需要FormsAuthentication module 如果你需要为你的用户使用Windows验证 那么你就可以不需要WindowsAuthentication 位于管道中的这些modules仅仅在每次请求到来时执行一些不必要的代码

  默认的modules都定义在了nfig文件中(位于$WINDOWS$\\Microsoft NET\\Framework\\$VERSION$\\CONFIG目录下)

  <Modules>

  <add name= OutputCache type= System Web Caching OutputCacheModule />

  <add name= Session type= System Web SessionState SessionStateModule />

  <add name= WindowsAuthentication

  type= System Web Security WindowsAuthenticationModule />

  <add name= FormsAuthentication

  type= System Web Security FormsAuthenticationModule />

  <add name= PassportAuthentication

  type= System Web Security PassportAuthenticationModule />

  <add name= UrlAuthorization type= System Web Security UrlAuthorizationModule />

  <add name= FileAuthorization type= System Web Security FileAuthorizationModule />

  <add name= ErrorHandlerModule type= System Web Mobile ErrorHandlerModule

  System Web Mobile Version=

  Culture=neutral PublicKeyToken=b f f f d a a />

  </Modules>

  你可以通过在站点的nfig文件中添加<remove>节点到你的网站应用程序中来删除这些默认的modules 例如

  <Modules><! Remove unnecessary Http Modules for faster pipeline ><remove name= Session /><remove name= WindowsAuthentication /><remove name= PassportAuthentication /><remove name= AnonymousIdentification /><remove name= UrlAuthorization /><remove name= FileAuthorization /></Modules>

  上面的配置对于使用了数据库并基于Forms验证的网站来说非常适合 它们并不需要任何会话的支持 因此 所有这些modules都可以安全的删除

  ASP NET 进程配置优化

  ASP NET进程模型配置定义了一些进程级别的属性 像ASP NET使用的线程数量 超时前阻止线程花费了多长时间 多少请求在继续等待IO工作完成等等 默认情况下 很多方面都具有太多的限制 当今 硬件已经变得十分便宜了 即使是采用双核多GB的RAM服务器也变得非常平常的选择了

  因此 进程模型配置能够减少ASP NET进程消耗更多的系统资源并提供为每台服务器提供更好的扩展性

  执行一次规则的ASP NET安装将会在nfig文件中创建如下配置的节点

  <system web><processModel autoConfig= true />

  你需要减少这种自动配置并针对不同的特性使用一些特定的值以便自定义ASP NET工作者进程的工作方式 例如

  <processModel

  enable= true

  timeout= Infinite

  idleTimeout= Infinite

  shutdownTimeout= : :

  requestLimit= Infinite

  requestQueueLimit=

  restartQueueLimit=

  memoryLimit=

  webGarden= false

  cpuMask= xffffffff

  userName= machine

  password= AutoGenerate

  logLevel= Errors

  clientConnectedCheck= : :

  AuthenticationLevel= Connect

  ImpersonationLevel= Impersonate

  responseDeadlockInterval= : :

  responseRestartDeadlockInterval= : :

  autoConfig= false

  maxWorkerThreads=

  maxIoThreads=

  minWorkerThreads=

  minIoThreads=

  serverErrorMessageFile=

  pingFrequency= Infinite

  pingTimeout= Infinite

  asyncOption=

  maxAppDomains=

  />

  除了下面几个不为默认值以外 其余均为系统默认值

  maxWorkerThreads

  每次处理默认为 在一台双核的计算机上 ASP NET的处理就需要 了 这意味着ASP NET在一台并行的双核服务器上可以每次处理 个请求 我将数量增加到 以便为ASP NET的每次处理提供更多的线程 如果你有一个应用程序 它的CPU处理能力并不是很强但是它却能够每秒更容易地处理多个请求 那么你就可以增加这个值

  尤其是你的Web应用程序使用了大量的Web服务调用或者下载/上传了很多不会对CPU产生压力的数据时 当ASP NET用完这些工作者线程时 它会停止出来发来的多个请求 此时请求会放置到一个队列中并持续等待直到出现一个空闲的工作者线程 通常到你的站点开始接受超过预期的点击时会发生这样的情况 那样的话 如果你需要节省CPU的使用 可以增加每次处理的工作者线程数来达到目的

  maxIOThreads

  每次处理默认为 在一台双核的计算机上 ASP NET进行的I/O操作就需要 个线程了 这意味着ASP NET在一台并行的双核服务器上可以每次处理 个I/O请求 I/O请求能够进行的文件读/写 数据库操作 web服务调用 从Web 应用程序中产生的HTTP请求等等 因此 如果你的服务器有足够的系统资源来处理更多的I/O请求 你可以将该值设置为 特别是当你的Web应用程序在并行模式下进行下载/上传数据 调用很多外部Web服务时 非常有用

  minWorkerThreads

  当空闲的ASP NET工作者线程数量低于这个数字时 ASP NET就会开始将这些发来的请求推入队列中 因此 你可以为改值设定一个较低的值以便可以增加当前请求的数量 此外 建议不要将该值设置得过低 因为Web应用程序的代码可能需要做一些后台处理和并行处理 此时会需要更多的空闲工作者线程支持

  minIOThreads

  除了它是针对I/O线程以外 其它与minWorkerThreads的方式相同 然而你可以将该值设置得比minWorkerThreads还低 因为就I/O线程而言 这里不会发生并行处理的问题

  memoryLimit

  指定内存大小所允许的最大值 作为整个系统内存的百分比 以便ASP NET在启动一个新的进程并重新分派存在的请求之前这些工作者进程能够进行消费 如果在你的服务器上仅仅只运行了你的网站应用程序 而且没有其它的进程需要RAM 你可以设置一个更高的值 比如

  然而 如果你同时有一个会发生内存泄漏的应用程序 那么最好是把该值设置为一个较低的值以便在出现大问题之前泄漏的内存能得到及时的回收从而保持你的站点稳定 尤其是当你使用组件并发生内存泄漏时 然而 这只是针对该问题的一个临时解决方案 当然需要你去解决泄漏问题

  除了processModel以外 另外还有一个非常重要的节点 你能够指定发出请求作为单独IP的最大数量

  <><connectionManagement><add address= * maxconnection= /></connectionManagement></>

cha138/Article/program/net/201311/13267

相关参考

知识大全 构建高性能ASP.NET站点之优化HTTP请求

构建高性能ASP.NET站点之优化HTTP请求  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!HTT

知识大全 优化ASP.NET应用程序性能研究与探讨

优化ASP.NET应用程序性能研究与探讨  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  网站的性

知识大全 提升Asp.net性能的一些方法

提升Asp.net性能的一些方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库访问性能优

知识大全 .Net课堂:ASP.NET常用的优化性能方法

.Net课堂:ASP.NET常用的优化性能方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数

知识大全 ASP.NET如何进行性能优化问题

ASP.NET如何进行性能优化问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一SqlDat

知识大全 10个提升ASP.NET程序性能的简单做法

10个提升ASP.NET程序性能的简单做法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishi

知识大全 ASP.NET如何进行性能优化问题[2]

ASP.NET如何进行性能优化问题[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  二查询语

知识大全 ASP.NET如何进行性能优化问题[3]

ASP.NET如何进行性能优化问题[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  四控件的

知识大全 ASP.NET如何进行性能优化问题[1]

ASP.NET如何进行性能优化问题[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Sql

知识大全 ASP.NET26个常用性能优化方

ASP.NET26个常用性能优化方  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  访问数据库资源