写点什么

你会如何优化应用程序的性能?

  • 2011-11-06
  • 本文字数:884 字

    阅读完需:约 3 分钟

StackExchange 是构建在 ASP.NET 和 SQL Server 基础之上的项目。最近, Sam Saffron Marc Gravell 分别撰写了博客,其中讲述了他们发现和解决性能问题的经验,在该过程中最终追踪到了.NET GC GEN-2 对象。大家可以从他们的博文中吸取很多关于优化生产环境中应用程序性能的经验。

问题是由自定义标签引擎引起的,它会在内存中存放大型对象列表。这两篇博文都值得一读,而 Sam 的文章则更详细地讲述了如何诊断问题。其中主要的应对方法包括:

  • 使用分析器。你可以使用类似于 MVC-MiniProfiler 的工具来分析方法调用,使用类似于.NET Memory Profiler 或者 Redgate ANTS Memory profiler 之类的内存分析器来跟踪内存使用情况。
  • 如果可以的话,要拥有可查询的日志——StackExchange 团队有后台执行的进程,它会解析原始的日志,并把它插入到大型的、专门的 SQL Server 实例中。如果无法查询日志,那么你就无法绘制出统计图并查看趋势或者模式。
  • 理解 GC 是如何工作的——.NET 中的垃圾回收器支持三代对象(GEN 0 到 GEN 2),而存放时间最长的数据会使用 GEN-2。GEN-2 的扫描频率最低,执行的成本最高,甚至可能会堵塞其它线程。Sam 建议阅读 Rico 的《Garbage Collector Basics and Performance Hints》一文以获得更多细节。

最后,团队采取了多项优化措施,包括针对应用程序的特定部分,从对象数组切换到索引数组,从类切换到结构体等。第一项措施是一种很常用的模式,这样数组就只针对主要的不可变列表的索引;而第二项并不常用,Sam 建议只在有超过 50 万个对象以上才使用它,这样在达到第二代垃圾回收器标准的时候就会很快释放内存。

StackExchange 团队对性能问题非常关注——比方说,你可以看到 StackOverflow 在三个不同的等级上使用caching ,从而提升反应时间,减少服务器的负载。

在InfoQ 上和MSDN 上都有很多关于性能和可伸缩性的资源可供参考,包括这篇 Rob Howard 撰写的文章。最后,引用 Sam 的话:“做很少的工作总是要比做更多工作消耗的资源少。”

你在扩展 ASP.NET 应用程序的时候,也有发现和解决瓶颈问题的类似经验和大家分享吗?

查看英文原文: How Do You Tune Your Application For Performance?

2011-11-06 02:503347
用户头像

发布了 340 篇内容, 共 139.2 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

Websocket集群解决方案

Jeremy Lai

websocket 集群 发布订阅模式

【愚公系列】2022年11月 微信小程序-app.json配置属性之window

愚公搬代码

11月月更

时延测评|免费又好用的低延时远程控制软件竟是它!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

问:React的setState为什么是异步的?

beifeng1996

React

能不能手写Vue响应式?前端面试进阶

bb_xiaxia1998

Vue

每日一题之请描述Vue组件渲染流程

bb_xiaxia1998

Vue

2022 VDC应用与服务专场:帮助开发者实现增长共赢

极客天地

2022-11-09:给定怪兽的血量为hp 第i回合如果用刀砍,怪兽在这回合会直接掉血,没有后续效果 第i回合如果用毒,怪兽在这回合不会掉血, 但是之后每回合都会掉血,并且所有中毒的后续效果会叠加 给

福大大架构师每日一题

算法 rust 福大大

vue面试如何准备,这几道面试题助力你拿到理想offer

bb_xiaxia1998

Vue

2022 VDC安全隐私专场:提升用户产品安全体验,携手伙伴共建安全新生态

极客天地

OceanBase获奖!蚂蚁集团第三次入选世界互联网领先科技成果

OceanBase 数据库

前端开发面试题自测

loveX001

JavaScript

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

没有什么比过时或不准确的文章更快的削弱你对产品的信心。

鸿蒙之旅

OpenHarmony

老生常谈React的diff算法原理-面试版

beifeng1996

React

深度分析React源码中的合成事件

goClient1992

React

远程控制软件如何像素级还原设计稿色彩?

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

漫游Hadoop(一):NameNode公平队列

冰心的小屋

hadoop hdfs

详解typora配置华为云图床

乌龟哥哥

11月月更

一天梳理完react面试高频知识点

beifeng1996

React

银行APP用户体验外滩峰会即将开启!四大亮点抢先看

易观分析

金融 银行 易观

常用硬件接口知识

芯动大师

RS232、RS485 11月月更 硬件接口 VGA

20道前端高频面试题(附答案)

loveX001

JavaScript

react高频面试题总结(附答案)

beifeng1996

React

手写一个react,看透react运行机制

goClient1992

React

算法题学习---合并k个已排序的链表

桑榆

算法题 11月月更

深入React源码揭开渲染更新流程的面纱

goClient1992

React

WiFi、蓝牙、NFC 哪家强?短距离无线通信技术对比分析

元器件秋姐

无线通信 元器件选型 元器件电商平台 元器件采购

远程办公软件RayLink公有云版正式上线,专业连接限时免费至12月底!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

Windows下载安装Vue开发者工具(VueDevtools)

不觉心动

Vue 11月日更 11月月更

商家和企业如何选择KOC合作:要明确推广目标、选对平台和博主

石头IT视角

你会如何优化应用程序的性能?_.NET_Roopesh Shenoy_InfoQ精选文章