写点什么

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

  • 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:503403
用户头像

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

关注

评论

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

OneFlow源码解析:算子指令在虚拟机中的执行

OneFlow

虚拟机 源码解析 算子

Kyligence 通过 SOC 2 Type II 审计,以可信赖的企业级产品服务全球客户

Kyligence

国际权威鉴证标准 企业级数据分析

不止跑路,拯救误操作rm -rf /*的小伙儿

华为云开发者联盟

开发 配置文件 OM脚本

个推数据资产管理经验 | 教你打造数据质量心电图,智能检测数据“心跳”异常

个推

大数据 数据智能 数据资产管理 数据质量保障 数据异常检测

8月份DB-Engines 数据库排行榜最新战况

雨果

数据库

Open Office XML 格式里如何描述多段具有不同字体设置的段落

汪子熙

xml 微软 Office 8月月更 openOffice

StoneDB 文档捉虫活动第一季

StoneDB

MySQL 数据库 开源 大数据 开源 8月月更

模块九 - 设计电商秒杀系统

Elvis FAN

C++运算符重载(二)之左移运算符重载

CtrlX

c c++ 进阶 重载 8月月更

从脚本到剪辑,影像大师亲授的后期制作秘籍

博文视点Broadview

制品库是什么?

雨后小溪

DevOps Artifactory 制品库 制品仓库 Packages

是什么影响了MySQL性能?

TimeFriends

8月月更

50个Java面试必问的面试题,这里都给你整好了

千锋IT教育

可视化服务编排在金融APP中的实践

京东科技开发者

可视化 BFF 金融 Obsuite

嘉为蓝鲸荣获工信部“数字技术融合创新应用解决方案”

嘉为蓝鲸

DevOps 运维 AIOPS 信创 研发

用低代码驱动IT现代化

力软低代码开发平台

SQL与NoSQL最终会走向融合吗?

雨果

nosql sql

快速上手,征服三种不同分布式架构调用方案

知识浅谈

分布式 8月月更

中小规模网站架构

舟停江吹雪

Linux

一起畅聊「云+操作系统」!龙蜥社区亮相阿里巴巴开源开放周,完整议程来了

OpenAnolis小助手

数据库 操作系统 龙蜥社区 阿里巴巴开源开放周 开源共享

Netty进阶 -- 非阻塞网络编程 实现群聊+私聊+心跳检测系统

Bug终结者

Netty 8月月更

Gitlab刚发布一项禁止使用 Windows 的公司政策

雨果

gitlab Github'

GPU加速Pinterest推荐模型,参数量增加100倍,用户活跃度提高16%

OneFlow

机器学习 深度学习 gpu

2022年裁员潮,失业程序员何去何从?

千锋IT教育

谷歌数据中心发生“电力事故”造成 3 人受伤

雨果

数据中心 谷歌

Gartner再次重申了“数据编织”的重要价值

雨果

数据编织

企业如何判断数据治理是否成功?

雨果

数据治理

使用CSS实现多种Noise噪点效果

dragonir

CSS html html5 css3

JWT 实现登录认证 + Token 自动续期方案

CRMEB

开源一夏 | mysql5.7安装部署-yum安装

zhangpfly

MySQL 开源 linux运维 #开源 8月月更

一文读懂NFT数字藏品为何风靡全球?

智捷云

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