主页»ASP.NET»ASP.NET功用监控和优化入门

ASP.NET功用监控和优化入门

来历:infoq.com 发布时刻:2016-11-02 阅览次数:

 要害要害:

  • 只要与运用目标相关联,基础设施目标才干最大发挥效果。
  • 高效功用优化的要害在于功用数据。
  • 一些APM东西为ASP.NET供给了开箱即用的支撑,这样入门运用ASP.NET仅需最小限度的初始设置。
  • 代码剖析东西为程序功用给出了最为翔实的视图。
  • 轻量级剖析东西给出了网页功用的实时视图,可用在开发环境和出产环境中。

  “这个网页翻开太慢了!”,对Web网站这样的诉苦是经常性的和普遍性的,尤其是自从Web运用开端逐步代替桌面运用以来。尽管Web带来了全球交给这样的抱负特性,可是也在功用层面带来了相应的应战。

 数据收集与运用的根本原理

  用户给了你一个“龟速”网页的url,那好,你该怎么做呢?网页翻开慢的问题是源自于哪里?是一开端便是这么慢吗?是对一切用户都很慢吗?要处理网页翻开慢的问题而且保证在一周后不会再次变慢,有许多比如此类的问题需求得到处理。

  尽管在网上能够查找到一些功用优化的材料,但它们一般都是关于Jit、废物收回、SQL查询优化、ORM圈套等这样一些特定主题的。考虑到完成优化的美好前景是诱人的,这儿冒出了这样的一个问题:针对当时的功用问题,怎么知道所选定的优化办法将会实在地发生好的成果?

  无疑在这个作业中的某一环是有所缺失的。咱们需求能可持续地找到功用问题地点的办法。经过运用该办法,咱们能发现体系中较慢的部分,并有实在办法支撑咱们对功用问题的确诊。把握了功用问题地点,咱们就能够进一步地确认是否需求进行功用改善,并对利益相关者解说一切这一切。

  关于所发现的上述功用问题,进行精确地鉴别是更有用的处理办法。问题在一开端或许并非是一个网页加载慢的问题。在存在超时的状况下(例如负载均衡器或许几秒后才会为衔接供给服务),彻底无法被区分隔这是一个死锁问题或是呼应时刻慢的问题,由于这两个问题导致了相同的成果,便是发生了超时。这需求数据去找到导致问题的真实原因。

  为了说明精确鉴别功用问题的重要性,下面罗列了一些导致Web运用呼应慢的或许问题排查点:

  • JavaScript呼应慢;
  • 资源加载中的发生了堵塞;
  • 用户端存在署理;
  • DNS问题;
  • ISP或网络问题;
  • 交换机和路由器;
  • 负载均衡器;
  • 运用代码(包含第三方软件库);
  • HTTP服务器(例如有时是ASP.net或IIS);
  • 第三方服务,例如:付出服务供给商、地图服务供给商等;
  • 子体系,包含:SQL Server、Redis、Elasticsearch、Rabbit MQ等。

  还能够罗列出更多的功用问题排查点,这取决于需处理体系的复杂度和规划。在如此之多的体系组件都可影响功用优化问题的状况下,怎么才干确诊功用问题呢?答案归纳为一个词:数据。你需求来自于每个体系组件的、相关且有含义的数据。关于Web运用呼应慢的问题,数据能够证明每个体系组件是对问题是有影响的仍是彻底无关的。

  数据在手,就能够开端从上述列表中按你的思路去抽取问题排查点进行剖析,这类似于在排序树中进行查找。每次在树中向下走一层,就越接近于功用问题的细节和实质,顺次鉴别功用问题是否存在于:

  • 客户端,服务器端或是两者之间的某处?
  • 呼应慢的JavaScript、烘托或是资源堵塞?
  • 负载均衡器、Web服务器、任一子体系或是第三方软件?

  在这样树中逐层下行时,功用问题会变得越来越明晰。关于每个层次上的问题排查点,定位功用问题所需的数据有必要要与对应的问题精度相匹配。这时有必要去运用功用剖析东西或SQL执行计划这样的东西。

  为有用地运用时刻,很有必要重申一下Amdahl规律:

不管一个使命改善的程度怎么,该使命中没有从改善中获益的部分约束了理论上的使命加快。

  例如在一个Web恳求中,假定需求100毫秒的服务器处理时刻和5秒的SQL查询时刻。即便你能够将服务器处理时刻优化到低于1毫秒,可是这对全体呼应时刻的改善很小,也便是从5.1秒变成5秒。改善SQL处理所需的5秒时刻是潜在收益最大的优化。

 架构问题

  这种逐层厘清优化问题地点的自顶向下办法,关于限制在单一页面中的优化问题具有很好的效果。那么运用于跨过多个页面的优化问题上时效果又怎么呢?例如,一些页面所存在的间歇性地翻开慢问题,是由于子体系跟不上全体作业节奏,或是由于体系中存在某个再次重启或许就无法持续作业的老旧网络交换机。

  这种状况下,侧重于运用的监控办法显现出它的限制性地点。这需求更多的软件层面和硬件层面上的目标,用于对体系中的每个组件进行评价。

  在硬件层面,首要所能想到便是web服务器和数据库服务器,但它们仅仅冰山的一角。有必要要辨认和监控一切体系中的硬件组件,这包含:服务器、网络交换机、路由器、负载均衡器、防火墙、SAN等。

  鉴于体系办理员的惯例作业便是硬件监控,或许关于体系办理员而言上述的一切目标是清楚明了的。可是这儿有个重要正告:假如将这些硬件目标从软件目标中别离处理,那么从功用视点看一切这些硬件目标中的大部分是毫无用处的。换句话说,目标只要置于相应的环境中才干发挥最大效果。

  例如,在一些状况下或许在数据库服务器上CPU占用率平均达50%是彻底正常的,可是关于其它服务器而言这便是个定时炸弹。50%的CPU占用率,假如是在峰值时刻这意味着仍有很大空间去运转更深重的使命。但假如是在空闲时刻段中而50%的CPU占用率频频发作,这就意味着运用或许无法接受传入恳求的突发峰值。

  底线便是,为评价体系的健康度,CPU、内存和磁盘等全体系规模目标有必要要与运用目标相关联。为给出更彻底的体系健康状况视图,能够对恳求吞吐量这样的运用目标和CPU占用率这样的体系目标进行可视化。

 运用功用办理(Application Performance Management,APM)东西

  APM东西供给数据收集、数据存储和数据可视化这些基础性操作。一般是由署理担任收集数据并将数据发送给数据存储,并运用Web界面以会集在Web恳求上的仪表盘办法对数据进行可视化。

  APM可用于:

  • 对Web运用功用做全体可视化;
  • 对特定的Web恳求功用进行可视化;
  • 在Web运用功用变差时或许多个过错出现时,主动发送告警;
  • 在业务量大时,对运用的呼应办法进行验证。

  在这儿给出了实例。

  下面并非翔实地列出了支撑对ASP.NET和IIS开箱即用的APM东西清单:

 基础设施监控东西

  基础设施监控东西在主机层面收集目标,这可更完整地反映功用。这些目标是在硬件和软件层面收集的。

 轻量级剖析东西

  轻量级剖析东西为特定Web恳求供给了高层次的目标,并在开发人员阅览Web页面时就可供给实时反应。这些东西可用于一切的环境类型中(包含开发环境、QA验证、模仿环境、出产环境等),因而十分适合于对特定页面功用的快速评价。

  与相应的具有彻底功用的剖析东西比较,轻量级剖析东西的实质差异在于它们并非附归于进程,这意味着在运用轻量级剖析东西时无需操心它们所发生的开支。

  在开发环境中,轻量级剖析东西对当时正编写的代码供给了实时反应。这关于发现N+1或呼应时刻慢等问题是十分有用的,由于呼应时刻总是显现在页面的一角上。

 用功用计数器填补空白

  Windows体系中的功用计数器(Performance counter)供给了硬件和软件层次上不同方面的目标。监控东西一般以功用计数器为陈述办法,例如CPU和内存占用状况。可是一般会缺失一些有用的计数器,例如废物收回时刻等。最实在可行的入门办法是运用根本列表并在迭代中增加必要的相关计数器。此外,运用perfmon对功用计数器进行实时地收集和可视化是可行的。在许多状况下,将用户定制目标或插件与APM东西进行集成也是可行的。

 SQL东西

  由于在许多运用中普遍地运用了数据库,耐久层(即SQL数据库)常常成为功用的瓶颈。用于SQL监控的专业东西可供给资源运用目标,以及一些特定的目标,例如等待时刻、每秒编译次数等,在这儿仅罗列几个。

  在供给下列数据状况下,能够发现一些类型的问题并可对功用进行改善:

  • 在一个或数个查询上存在过度的吞吐量;
  • 过度的CPU占用,这暗示了查询问题的存在或许是索引的缺失;
  • 可被缓存的高吞吐量查询。

  SQL监控东西包含:

 其它的耐久体系

  一切子体系都需求在某种程度上进行监控。关于低吞吐量或非要害的体系,简略的数据收集和可视化即足矣。在此外的状况下则需求愈加高档的、专业的监控。

 代码剖析东西

  当已确诊某个特定页面或代码段检测是呼应慢的,代码剖析东西可为功用问题判定供给最翔实的视图。代码剖析东西还可为数据库查询和Web恳求这样的外部调用供给了精准视图。

  剖析东西:

 内存剖析东西

  内存监控和废物收回目标有助于潜在问题的检测。但这些目标在显现了存在问题的一起,一般并未给出问题的地点。假如需求队内存和废物收回问题进行深化地探求,内存剖析东西就可派上用场。

  剖析东西:

 用户端剖析东西

  功用问题也或许来自于前端。当时这个问题十分常见,由于以JavaScript主导的单页运用的很多出现。一切的干流阅览器都已嵌入了比如代码剖析和内存剖析这样的东西。显现事情和恳求的序列的东西有利于一眼就确认问题是源于前端仍是后端。

  东西:Tools:

 页面剖析东西

  高层次客户端东西为发现并处理功用问题的供给了便当着手点。这些东西能够针对呼应时刻问题的发生本源供给高层次的视图,并给出一些相应的主张。例如Google的PageSpeed Insights便是这样的一个免费东西。

  体系功用相关的要素和东西的数量是十分之多,这看上去好像十分复杂。可是它们能够用一个词进行归纳:数据。对体系有一个明晰的和精确的视图,这使得推理功用问题成为或许。这也使你能够在现场学习怎么去处理功用问题,由于功用目标和图表将会引导你去发现到底是什么影响了体系功用。

QQ群:凯发娱乐官网官方群(515171538),验证音讯:10000
微信群:加小编微信 849023636 邀请您参加,验证音讯:10000
提示:更多精彩内容重视微信大众号:全栈开发者中心(fsder-com)
m88 188bet uedbet 威廉希尔 明升 bwin 明升88 bodog bwin 明升m88.com 18luck 188bet unibet unibet Ladbrokes Ladbrokes casino m88明升 明升 明升 m88.com 188bet m88 明陞 uedbet赫塔菲官网 365bet官网 m88 help
网友谈论(共0条谈论) 正在载入谈论......
沉着谈论文明上网,回绝歹意咒骂 宣布谈论 / 共0条谈论
登录会员中心