.Net+SQL Server企业应用性能优化笔记2——查找瓶颈

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

前面一篇文章中我已经对项目的基本情况进行了简单的介绍,今天就开始动手针对系统进行性能调优。在性能调优上面说实话我算是个菜鸟,并没有太多的经验和扎实的基础,所以有错误的地方希望大家指出。

对于一个BS的系统来说,总共涉及到3个角色:Web服务器、数据库服务器和客户端。性能调优的第一步也是最重要的一步就是查找瓶颈。到底是Web服务器中的程序有问题还是数据库服务器上的SQL查询语句有问题,或者是客户端上的HTML、JS、Flash、SilverLight、图片有问题?就算知道了是哪个角色出现了问题,那么到底是CPU上的问题、内存问题、磁盘IO问题还是网络问题?如果没有找到瓶颈就开始调优,那无异于缘木求鱼。举个简单的例子,如果一个页面客户端请求要10秒钟系统才响应,在网络传输和浏览器展现上用了1秒,Web服务器进行逻辑处理和运算用了8秒,SQL服务器进行数据查询用了1秒,如果错误的将瓶颈判断为SQL服务器,对SQL查询进行调优,废了九牛二虎之力将查询效率提高了100倍(只需要0.01秒),单从SQL调优上来说算是比较成功的,但是从整体而已,客户端请求该调优后的页面还是要花9.01秒,用户可能根本感觉不到10秒和9.01秒的差别,所以整个调优是失败的。

前面说到BS系统中的3个角色:Web服务器、数据库服务器和客户端。要查找瓶颈在哪个角色上,最好的情况是这3个角色是3台不同的计算机,而且这3台计算机最好比较单纯,也就是说Web服务器上就只跑了一个IIS,其他什么服务都不跑,SQL服务器上只运行了SQL Server,客户端只运行了个IE,而且IE只打开了我们要调优的这个系统。一般来说,大多数瓶颈都是出现在WEB服务器或SQL服务器上,很少有在客户端出现瓶颈的。(不过我还真遇到过客户端出现性能瓶颈的情况,由于使用了一个不正确的GIF图片,该图片导致客户端CPU占用100%,使得用户感觉系统响应很慢。)

首先确认瓶颈是否在客户端。调查用户在使用该BS系统时的硬件和软件环境,是不是只有配置低的电脑才感觉系统缓慢?是不是只有使用了FireFox的用户才感觉系统缓慢?用户在使用该系统时是不是CPU占用过高?通过对客户端的一些调查就可以确定瓶颈是否在客户端了。真是在客户端的话那就要优化JS、优化HTML等。

确认了瓶颈没有在客户端,那么剩下的就是2台服务器。要确定到底是哪台服务器的问题,用到的主要工具就是Windows计数器。在使用Windows计数器之前还可以使用Windows的任务管理器来大概的查看一下CPU、内存、进程的使用情况。但是切不可看到数据库服务器的CPU高就说是数据库服务器的问题,也可能是WEB服务器上运行的程序有问题。我以前就遇到过这样的情况,即使是在业务低谷期(下班后,晚上时间)数据库的CPU占用率一直居高不下,经过好长时间的分析,终于找到原因,原来是程序里面写了死循环,在不断的执行数据库操作。另外,就算能够确定是数据库的问题,也不能因为CPU占用高就认为是执行的运算太复杂,其实更大的可能是因为对数据的IO太多。大量的IO操作可能造成CPU负担加重。

在Windows计数器中可以监视系统的内存、CPU、磁盘还有各应用程序自身提供的计数器(SQL Server、Asp.Net等都有自身的计数器)。要监视系统的内存情况可以添加Memory下的Pages/sec ,这个计数器表示物理内存和硬盘上的虚拟内存的分页交互情况,数值越大,表示系统读写虚拟内存频繁,主机繁忙,平均值一般在20以下最好。另外还有大量的ASP.NET和SQL Server的计数器,我就不一一介绍了。

如果环境允许,我们将业务系统转移到测试环境中,而且是将Web服务器和SQL服务器分开,同时如果能够让测试环境和生产环境的硬件配置和网络配置这些都差不多那就更好了。使用LoadRunner或者是VS或者其他压力测试工具模拟多个用户对性能有问题的页面进行压力测试,同时开启服务器上的相关计数器。通过对两个服务器的监控,基本上就可以判断出到底哪个服务器存在性能瓶颈。

如果要获得更详细的性能瓶颈信息,那么需要获得程序的源代码,然后修改源代码在其中加入记录时间的代码,在页面初始化的时候、调用数据库之前、调用数据库之后、页面Render完成之后分别加入记录时间的代码,将这些时间记录下来,然后可以得到页面载入的时间,调用数据库花费的时间。比如页面载入花了10秒钟,从时间记录上看,调用数据库花了9秒钟,那么说明性能的瓶颈是在数据库上,而不是在Web服务器上。

另外还有一种办法可以获得函数调用的时间,那就是使用.net性能跟踪的工具ANTS Profiler,这个工具是Red Gate公司出品的一款工具,十分好用,在我以前的博客中也进行了介绍。使用这个工具Host到Web服务器的IIS上,然后打开IE浏览器我们就做业务操作,该工具就可以跟踪出打开某个页面,做某些页面操作的时候调用每个函数的时间,同时也列出了哪些函数调用比较费时。在打开ANTS Profiler进行.net性能跟踪的同时,SQL Server上也应该打开SQL Server Profiler对数据库进行跟踪。比如在页面上我们执行的一个查询,系统返回了查询的表格,通过ANTS Profiler跟踪得到查询操作耗时9.2秒,而我们在SQL Server Profiler中看到查询数据库耗时(Duration字段)8921ms,整个操作是9.2秒,数据库操作就花了8.9秒,显然瓶颈是在数据库上。

Windows 11家庭版25H2部署SQL Server 2008 R2与U8V15实战指南 数据库作为企业信息系统的核心,其部署与配置是IT基础设施搭建的关键环节。SQL Server作为主流的关系型数据库管理系统,其安装与兼容性处理是系统管理员和开发者的必备技能。在技术实践中,尤其是在新旧系统交替的过渡期,解决老版本数据库软件在新操作系统上的兼容性问题具有重要的工程价值。例如,在最新的Windows 11家庭版25H2上安装SQL Server 2008 R2,就需要处理.NET Framework依赖、权限配置和安装程序兼容性等挑战。这种场景常见于企业遗留系统的维护、特定软件的测试环境搭建,以 阅读详情

相关推荐

SQL Server 2022 常见问题解答

本文深入解析了SQL Server 2022在安装配置、性能优化、数据管理及安全管理方面的常见问题与解决方案。针对安装过程中的软硬件要求、错误处理及远程连接配置提供了详细指南;从索引优化、查询分析、死锁处理等角度阐述性能调优策略;系统讲解了数据库备份恢复、数据迁移及丢失应对方法;并重点探讨了身份验证、数据加密、权限管理等安全实践。文章结合代码示例与操作步骤,为SQL Server 2022的运维人员、开发人员及数据库管理员提供了全面的技术支持与实战经验,助力高效解决实际应用中的各类挑战。

zhu1996zhu的博客 1323

.Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈

前面几篇优化笔记写的太过概括,有朋友建议我把优化的步骤和方法写详细点,这篇比较我就详细讲解下使用ANTS Profiler+SQL Server Profiler查找瓶颈所在。 首先我们需要部署一个测试环境,将Web项目的源代码拷到测试环境Web服务器IIS上,使得可以直接通过IE访问我们的网站。SQL Server环境可以部署在同一台机器上,条件允许的话有专门的数据库测试服务器那当然是更好,没

CSDN深蓝居 1103

ASP.NET MVC RenderPartial性能优化实战指南

RenderPartial是ASP.NET MVC中用于复用视图片段的核心API,其底层依赖View路径查找、控件生命周期和缓存机制。在高并发或大批量渲染场景下,未启用的视图缓存、Debug模式强制禁用、重复ViewContext创建等机制会引发显著性能衰减。技术价值在于通过路径优化(绝对路径+Release模式)、逻辑重构(将循环移入UserControl)和缓存定制,实现从毫秒级到亚毫秒级的降本增效。典型应用于评论列表、商品卡片等高频复用UI组件,尤其适配金融、政务等仍运行MVC 3/4的存量系统。

baochuanying9531的博客 400

.Net+SQL Server企业应用性能优化笔记—精确查找瓶颈

首先我们需要部署一个测试环境,将Web项目的源代码拷到测试环境Web服务器IIS上,使得可以直接通过IE访问我们的网站。SQL Server环境可以部署在同一台机器上,条件允许的话有专门的数据库测试服务器那当然是更好,没有也无所谓。部署完测试环境后保证我们这个测试环境没有其他用户在访问,只有我们访问,免得其他用户的操作影响了我们。 假设我们的网站在首页打开的时候很慢,需要10多秒钟才能打开,首页

软件研发实战应用技术分享 1006

C#与SQL Server交互实战:从ADO.NET基础到性能优化

数据库交互是后端开发的核心基础,其中ADO.NET作为.NET平台数据访问的底层技术,提供了直接、高效的操作数据库能力。其核心原理在于通过连接池管理、命令对象和参数化查询等机制,实现对SQL Server等数据库的安全访问。掌握ADO.NET的技术价值在于,它不仅是理解现代ORM框架(如Dapper、Entity Framework)工作原理的基石,更能让开发者在需要精细控制SQL、优化性能或处理复杂场景时游刃有余。在实际应用场景中,无论是构建高并发的Web服务、执行批量数据处理,还是开发对响应时间有严苛要

weixin_30587927的博客 303

.Net+SQL Server企业应用性能优化笔记3——SQL查询语句

在上一篇文章中我们使用了几种方法来确定瓶颈,找到瓶颈,下面再回顾一下: LoadRunner压力测试+Windows计数器,这种方法主要是找出大概的性能问题是在哪台服务器,主要是哪个资源紧张。 ANTS Profiler+SQL Server Profiler,这两个工具的完美搭配可以准确的定位性能是出在哪个函数,哪个SQL语句上。 如果性能问题是出在程序上,那么...

weixin_30445169的博客 63

SQL Server Profiler 工具的使用

那么如果是牵扯到数据库相关的操作,我们可以利用SSMS自带的分析工具,来查看进来的每一条sql语句的执行时间,以此来定位问题。打开之后需要设置一下跟踪属性,其中常规里,可以设置把跟踪记录导出到文件或者表,如果为了方便仔细分析,可以选择保存到文件,之后停止跟踪的时候,就会生产一个。但是这里有一个问题,这个跟踪的是整个服务里面的所有数据库,如果数据库比较多,或者连接比较活跃的话,那跟踪记录就会不断的刷新,就不容易找到关键信息。文件,之后在SQL Server Profiler在打开这个文件,就可以慢慢分析了。

李公子的博客 2508

SQL数据库与.NET应用部署全攻略

本章节详细介绍了SQL数据库的安全性和性能优化策略。通过细致地讲解用户权限管理、安全审计、查询优化和性能监控,本章节旨在为数据库管理员和IT专业人员提供实用的知识和工具,帮助他们保护数据安全并提升数据库的整体性能。通过对数据库实施有效的安全措施和性能调优,能够确保数据库系统的稳定运行,为业务提供高效可靠的支持。.NET Framework是由微软开发的软件框架,它包括一个大型类库和支持多种编程语言的运行时环境。它允许开发人员使用单一编程模型来创建Windows客户端和服务器应用程序。

weixin_28713083的博客 923

ASP.NET性能优化实战:数据库索引、ADO.NET内存与ViewState三大瓶颈

网站性能优化本质上是系统工程,其核心在于理解请求链路中各层的物理约束与资源代价。从数据库查询执行计划、索引匹配原理,到.NET数据访问对象的内存生命周期,再到Web控件状态序列化的带宽开销,每一处设计都直接影响响应延迟与吞吐能力。尤其在高并发场景下,数据库索引失效会导致全表扫描雪崩,ADO.NET内存滥用引发GC风暴,ASP.NET ViewState膨胀则直接拖垮首屏加载——这三类问题覆盖了80%以上传统Web应用的性能投诉。本文基于真实生产事故,提供可落地的诊断路径与重构方案,适用于ASP.NET We

天下无双 427

基于ASP.NETSQL Server的校园贴吧系统开发实战(含源码+数据库)

校园贴吧作为高校学生日常交流的重要平台,承担着信息共享、话题讨论与社交互动的核心功能。通过分析典型用户行为路径——如匿名浏览、实名发帖、评论互动与内容检索,明确系统需具备高可用性、易用性与内容安全性的综合特征。结合校园场景的特殊需求,系统在开放性基础上引入敏感词过滤、权限分级与审核流程,确保言论自由与合规管理的平衡,为后续ASP.NET技术选型与多层架构设计提供清晰的业务支撑。BLL层位于UI与DAL之间,承担核心业务规则的执行与协调任务。

weixin_42576804的博客 1218

SQL Server视图设计与性能优化实战指南

视图是关系数据库中实现逻辑抽象与数据封装的核心机制,其本质为虚拟表而非物理存储,依赖查询重写与优化器展开实现动态结果集。理解视图的关键在于掌握SQL Server的视图展开(View Expansion)机制和SCHEMABINDING约束原理——前者决定WHERE条件能否下推、执行计划是否高效,后者保障依赖稳定性并支撑索引视图创建。技术价值体现在安全隔离、业务逻辑集中管控及高频聚合加速三大场景;典型应用包括行级权限控制视图、指标计算封装视图,以及基于覆盖索引或索引视图的报表性能优化方案。本文聚焦SQL S

dingguayi7025的博客 502

SQL Server 2022常见问题解答

SQL Server 2022的常见问题覆盖安装、配置、性能、安全等多个维度。通过系统化排查(如日志分析、兼容性验证)和针对性优化(如索引调整、硬件升级),可显著提升稳定性。建议定期备份、监控及测试环境验证,以降低运维风险。以下是关于SQL Server 2022常见问题的综合解答,涵盖安装、配置、性能优化、兼容性、安全性、备份恢复及高可用性等方面,结合资料提供详实解决方案和引用来源。

破损的天堂鸟博客 1570
上一篇: .Net+SQL Server企业应用性能优化笔记1——调研
下一篇: .Net+SQL Server企业应用性能优化笔记3——SQL查询语句
studyzy
博客等级 码龄22年 566粉丝 232原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值