来自 新葡亰运维 2019-11-10 04:26 的文章
当前位置: 澳门新葡亰app > 新葡亰运维 > 正文

【澳门新葡亰app】性能问题通常不是那么显而易

当应用程序性能出现问题时,服务器硬件通常会背上黑锅,人们想到的往往是如何优化服务器的硬件。实际上恰恰相反,多数情况下,硬件并非导致性能问题的罪魁祸首。对于基于SQL Server的应用程序的性能和升级,服务器硬件所起的影响要远比人们想象的小。

澳门新葡亰app 1

多数应用程序运行缓慢的原因是因为其糟糕的前期设计,而并非硬件性能不够。硬件通常被冠以恶名的原因是,在应用程序运行缓慢之前,性能问题通常不是那么显而易见。而且应用程序的设计不是说改就改的,人们解决性能问题最简单直接的办法就是提高其硬件性能。虽然这种办法也有一定效果,不过它不能真正完全解决问题,这也是为什么人们常常将性能低下归结为硬件问题的原因。虽然硬件有时候确实会导致性能问题,但多数情况下它却不是主要原因。

性能分析及调优原理                                                                                             作者:   英华二少

为了防止你的服务器硬件给SQL Server应用软件拖后腿,首先让我们简单看一下一些常见的硬件选择和调优问题。

性能测试的目的是评估当前系统性能指标,分析定位解决性能瓶颈,预防规避性能风险。性能分析是为了确定导致性能瓶颈的原因,而调优就是用来解决性能瓶颈。通过某些手段来让系统的性能得到提升是性能调优的主要目的。

  选择硬件


为你的SQL Server应用选取最佳硬件要参照很多因素,诸如数据库的规模、用户的数量,数据库被使用的方式OLTP或OLAP)等等。虽然没有成功的公式来估算服务器硬件需求,最好的办法就是在开发阶段提前开始测试你的应用。尽管许多有经验的DBA可以对你所需要的最佳硬件给出合理的估测,只有通过实际的测试才可确信满足你的应用需要的硬件是什么。

【指标达成法】

在考察服务器硬件时,需要牢记以下硬件选择方面的事项:

将测试结果与用户需求进行比较,如果达到用户需要则测试通过。

CPU:要购买可以扩展CPU数量的服务器。例如,通过测试结果你认为单CPU服务器就够用,那么你应该购买具备至少两个CPU安装空间的服务器,哪怕现在空着另一个CPU插槽的位置。预留下将来升级扩展的空间。

系统满足10万注册用户(其中活跃用户数为1万)访问

内存:它可能是对SQL Server的性能影响最大的硬件部分。理想情况下,你的整个数据库应该可以fit into内存。不幸的是,这一般是不可能的。最低要求是,内存的大小应该能够容纳你的数据库中最大表,如果经济上可以接受,为服务器配备其能够支持大小的内存,换句话说,内存多了没坏处。

系统处理能力:20个注册每秒,45个并发浏览每秒。30个登录操作每秒。

I/O子系统:它对SQL Server性能的影响仅次于内存,也非常重要。最低要求是,使用硬件RAID系统来运行你的数据库。大概来说,你应该购买多个小硬盘,而不是一个大硬盘。在阵列中的硬盘数量越多,就可以获得更快的I/O。

服务器资源利用率在满负载的情况下。忙时峰值CPU负载不超过75%,内存占用不超过80%

网络连接:在你的数据库服务器上,至少应该有一个百兆网卡,而且它应该连接到一个交换机上。理想情况下,服务器应该有两块网卡,通过全双工方式连接到交换机。

例如:需要对一个参加100米跑的选手进行技术指导,并不在乎他是否能够拿到冠军,而是重点强调能否提升自己的 比赛成绩,那么就需要进行系统的训练和指导,如规范的起跑动作、强化肌肉及协调性等,最终实现运动成绩的提高。

  调优服务器


如果没有正确的配置和优化,最贵的服务器硬件未必具有最好的性能。我曾经遇到过很多硬件相关的性能问题,其多数原因是驱动未正确安装。这些硬件性能相关的问题中很多往往难于跟踪和解决。一般来说,应该让一个有经验的技术高手来确保硬件被正确安装和配置。然后,在该服务器被用于生产环境之前,在一定条件下测试你的应用程序,以发现潜在的性能问题。另外,你的操作系统也必须被正确的配置,这涉及到很多方面,在这儿无法具体介绍。

(1)应用程序诊断

为了在一个服务器获得最好性能,SQL Server应该独享一台服务器,而不应该同时还安装其它管理工具。不要为了省一点钱而将你的IIS或MTS服务器与SQL Server安装在同一台服务器上。这不仅仅会影响SQL Server的性能,而且使得性能调优和故障排查工作非常难于进行。

应用程序的诊断是性能测试的最初目的。通过模拟多用户操作形成负载,检验应用程序是否能满足用户性需求。如果不能满足,则定位应用瓶颈,并寻找解决该瓶颈的方案,确保系系统在修正后能满足用户需求。对于一个项目来说,一般都以应用诊断为主。

  优化SQL Server配置

(2)系统调优

调优SQL Server的另一个常见误解是,为了获得最佳性能你必须定制优化它的多处配置。对于一些早期版本的SQL Server来说,这种做法或许有一定道理,但是对于最近版本的SQL Server,配置通常已经不再是一个问题,当然对于那些超大、超忙碌的服务器来说或许是另外一种情况。

在性能调优中最基本的目的是为了满足用户,而进一步的要求是超越自己,这个时候需要做的是让系统能够比以前更加优秀地运行,通过生成负载,对测试结果进行分析,并且准备大量的软硬件环境进行迭代测试,找出影响性能的要素,最终提升系统的性能。一般产品都会采用系统调优的方式来逐步完善系统性能。

多数情况下,SQL Server可以自我调优。也就是说,SQL Server可以检查自己运行的任务,然后自动进行内部调整,以使指定任务获得尽可能高的性能。


当你对SQL Server进行性能测试时,需要牢记SQL Server需要花一点时间来将自己调整到最优化。换言之,启动SQL Server服务后你立即获得的性能,与在有负载情况下运行几个小时后的SQL Server的性能是不相同的。因此在进行测试之前,要让SQL Server有一定时间来适应你的负载。

##常见的性能瓶颈有如下一些情况###

通过企业管理器,或者sp_configure存储过程,你可以修改36个SQL Server配置选项。如果你没有调优SQL Server的丰富经验,我不建议你修改任何SQL Server的设置。如果你是一个新手,你所做的修改往往会适得其反,会降低SQL Server的性能。因为一旦修改了SQL Server的设置后,会使其丧失其自我调优的能力。

(1)硬件上的性能瓶颈

如果经过深思熟虑后,你仍然认为修改一个或多个SQL Server配置可以提高其在特定环境下的性能,那么你应该稳妥谨慎的来对其进行修改。在你修改设置前,首先应通过诸如性能监视器之类的工具来了解当前SQL Server的性能,以其作为基准。每次只进行一处修改。不要一次进行多个修改,因为这样你无法明确每一个设置带来了性能上的什么变化。

一般指的是CPU、RAM方面的问题,分为服务器硬件瓶颈、网络瓶颈、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、Web服务器)、应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)  例如:确定了在数据库服务器上需要6个CPU、12G内存。但是正测试时,发现CPU的持续利用率超过95%,这是可以认为在硬件时上出现了性能瓶颈。

在进行了一处修改后,再次在相同负载下测量SQL Server的性能是否真正有所提高。如果没有,那么恢复到默认设置。如果的确有提高,再继续检查性能在其它负载下是否也会提高。通过后期测试,你或许会发现你的修改在某些负载下可以提高性能,但在其它负载下却会降低性能。这也是为什么我不推荐你修改多数设置的原因之一。

(2)应用软件上出现的性能瓶颈

一般来说,如果你的SQL Server应用程序遭遇到了性能相关问题,通过修改SQL Server设置方法解决这些问题的可能性非常小。

一般指的是应用服务器、Web服务器等应用软件,还包括数据库系统。

  1. 2008年服务器市场盘点
  2. 基于Linux的FTP服务器权限管理
  3. 教程:为虚拟机选择合适的服务器硬件

例如:在WebLogic平台上配置了JDBC连接池的参数,最大连接数为50,最小连接数为5,增加量为10。在测试时发现,当负载增加时,现有的连接数不足,系统会动态生成10个新的连接,导致交易处理的响应时间大大增加。这时可以认为在应用软件上出现了性能瓶颈。

...

(3)应用程序上的性能瓶颈

一般指的是开发人员新开发出来的应用程序。例如:某程序员开发了一个缴费处理程序。在测试时发现,这个缴费处理程序在处理用户的并发缴费请求时,只能串行处理,无法并行处理,导致缴费交易的处理时间很长,这是可以认为在应用程序上出现了性能瓶颈。

(4)操作系统的性能瓶颈

一般指的是Window、Unix、linux等操作系统

(5)网络设备上的性能瓶颈

一般指的是防火墙、动态负载均衡器、交换机等设备。例如,在动态负载均衡器上设置动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器机制没有起到相应的作用,这是可以认为在网络设备上出现了性能瓶颈。

性能瓶颈出现的原因及其定位是十分复杂的,这里只是简单介绍常见的几种瓶颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员一起定位性能瓶颈。


###一般性能问题调优的步骤###

Step1确定问题

##应用程序代码##:在通常情况下,很多程序的性能问题都是写出来打的,因此对于发现瓶颈的模块,应该首先检查一下代码。

##数据库配置##:经常引起整个系统运行缓慢,一些诸如Oracle的大型数据库都是需要DBA进行正确的参数调整才能投产的。

##操作系统配置##:不合理就可能引起系统瓶颈。

##硬件设置##: 硬盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析的重点。

##网络##:网络负载过重导致网络冲突和网络延迟。


Step2.当确定了问题之后,我们要明确这个问题影响的是响应时间吞吐量,还是其他问题?

是多数用户还是少数用户遇到的问题?如果是少数用户,这几个用户与其他用户的操作有什么不同?系统资源监控的结果是否正常?CPU的使用是否达到了极限?IO情况如何?问题是否集中在某一类模块中?是客户端还是服务器出现问题?系统硬件配置是否够用?实际负载是否超过了系统的负载能力?是否未对系统进行优化?

Step3确定调整目标和解决方案。

提高系统吞吐量,缩短响应时间,更好地支持并发。

Step4测试解决方案

对通过解决方案调优后的系统进行基准测试。

Step5分析调优结果

系统调优是否达到或者超出了预订目标?系统是整体性能得到了改善,还是以牺牲某部分性能来解决其他问题。调优是否可以结束了?

最后,如果达到了预期目标,调优工作就基本可以结束了。

本文由澳门新葡亰app发布于新葡亰运维,转载请注明出处:【澳门新葡亰app】性能问题通常不是那么显而易

关键词: