`
- 浏览:
170997 次
- 性别:
- 来自:
free-town
-
- 为什么要写这篇文章,是因为最近线上product出现的性能问题因为上次的发布而引起巨大的波动,cpu使用率从日常的20%左右一下飚升到了最高能达到80%,load值从平常的2左右飚升到10,这个数字我想不管是对于开发、dba、sa来说如果碰到这样的事情,我想心情至少下降好几个等级,这意味着产品存在很严重的问题,那必然接下是花时间去解决掉问题,但是因为这次的发布全是因为web app所致,于是最紧迫的工作就是赶快抓紧时间去分析解决问题的思路和方法.
我先对这个系统做一个大概的概述,首先主站会发出一个search request,到后端以后会组装成wrapper list,然后通过AMQ通道来发送消息到另一个系统(在该系统先会去cache取数,如果每有会触发wrapper上各个站点去抓数据),而可想而知其实最为主要的还是公司内部系统,也就是wrapper会定时去抓取这些数据放到cache中,也是一个庞大的数据量的系统,而且公司内部这个系统还会于第三方数据进行交互,所以整个系统架构还是比较复杂,于是在性能评估的时候没有很好的办法,因为于第三方去交互的时候属于跨网络交互(当然在这一层也有cache机制,服务器数量大概是20台tomcat,30台memcache,其它系统具体数量不便公开),于是一个问题是很多时候跟第三方打交道时候也会消耗更更多的资源在网络I/O上(当然如果search request在cache中hit的话就不会于第三方交互,只是自己的服务器局域网会有一个I/O上的消耗)..
既然问题出现了,首先就只能从app去优化系统,于是先是代码方面的调整,在这个层面来说无非就是尽量频繁去创建一些不必要的object,以避免JVM不断的去做GC工作,然后就是调整一下heap的内存大小(包括old区,edge区,永久区),这些调整只是能保证一个健康系统内存是足够的,但是并能解决所有的问题,这次产品的发布以后是cpu的us%比飚高,于是可以肯定的是因为程序导致的,因为如果是系统线程或系统本身的问题话,cpu的sy%这个值也会跟着飚高,但是这个值一值是一个很平稳的值,基本没有任何变化..于是果断判断不是系统带来的问题...于是使用jstack导出线上环境的栈信息进行分析,结果能看到很多waiting on monitor等等这样的信息,于是判断cpu在频繁的做运算,于是出于这个问题,对代码中不必要的运算做处理(主要还是for loop,尤其是涉及到数量级别的数据时,切忌这一点正确处理好for loop),还有一点就是一定要保证edge区不要使系统不断的去做gc.,不断的去gc也是一个导致系统不稳定的点...在这个过程中经历层层分析和调试以后性能相对来说降到了基本和发布之前的状态...
下面简单谈谈一个系统如果出现问题应该分析点:首先对于开发来说目前架构基本上是保持三层架构,前端是一些server(nginx,lighttpd,apache等等),这些server主要是用来处理一些静态文件,然后就是负责load balance,转发到下层的时候才是我们的app部分,对于最后一个层结构来说我想也不必多说,那就是db,是任何一个机构的核心。app部分只是一些指令而已,但最终的处理还是在数据,我在此也主要是想简单谈谈app这一层。对于app这一层来说也就大概以下几个点比较重要:I/O、Memory、CPU,(当然如果你的系统涉及就到跨域问题那当然还存在网络I/O)。
对于I/O部分来说无非就是写入、读出操作(如果app涉及到网络数据交互还存在网络I/O),对于这类操作我们没有办法去控制,只是避免不必要的频繁的I/O操作,来达到系统稳定的目的,像Linux服务器下可以使用iostat,sar这些命令来分析,在windows同样可以找一些工具来分析,或者直接用windows taskmgr来分析。
Memory这我想对于任何一个系统来说这是一个指标,很多系统默认情况下会在硬盘区开辟一段vm memory来避免内存不足的问题(这个值当然也是我们必须设置的一个值,除非有一种情况能保证物理内存是足够用的,可以不用调整该参数,该参数一般是物理内存的1.5倍到2倍,是一个经验值),因为内存是按页来存储的,所以还有一个问题就是避免跨page获取数据,跨page操作是很消耗性能的一个工作。对于JVM内存分配我想应该根据app应用而调整。对于内存来说可以使用vmstat,top命令来分析,当swap使用足够多的时候就要考虑是什么原因导致的。
最后一个我想也是核心,那就是CPU,它是执行指令的指挥手,任何一个返回的数据多是基于它的指令返回的,当然首先一点的是对于app来说只是涉及到运算问题,尤其是程序涉及到多层循环的时候是很消耗cpu的(尤其涉及到大数据量处理),在此就是避免不必要的循环操作以及避免JVM做不必要的对象创建工作,这次系统的负载飚升就是因为运算量过大的问题,当然对于程序部分也进行过性能优化。最终来说还是达到了一个比较理想的效果。对于cpu来说我们可以大概使用以下手段来分析:top、sar这些命令,top命令执行以后可以使用shift+p来按进程使用cpu大小来排序分析,或者直接M可以看到每一个进程使用memory情况..
总之,对于app tuning来说没有更好的办法,只能一步一步分析,这是唯一的办法,然后就是靠自己的平时的积累和经验。最好的办法我想是从写app开始的第一步开始,做好每一个步骤。避免一些问题的出现..
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### 如何优化SAP NetWeaver 7.0中的知识管理性能 #### 一、引言 在当今数字化转型的时代背景下,企业对于高效知识管理的需求日益增加。SAP NetWeaver 7.0作为一款集成的软件平台,为企业提供了丰富的功能来支持其...
HD Tune是一款广受好评的硬盘诊断工具,专为用户提供硬盘健康状态检查和性能测试。这款中文免安装版的特性使得用户无需经历繁琐的安装过程,即可直接使用,方便快捷。以下将详细介绍HD Tune的主要功能、用途及其在...
Gran Vals org.wma Nokia tune 2011(Bella N9).mp3 Nokia Tune 2013.mp3 nokia tune all.mp3 Nokia tune remix(2011获奖版).mp3 Nokia tune_1994.wav Nokia tune_2005.wav Nokia tune_2008.wav
《HDTune Pro 5.60:硬盘性能检测利器》 HDTune Pro是一款备受赞誉的硬盘检测和诊断工具,版本号5.60,主要用于评估硬盘的健康状况、性能以及提供数据安全相关的功能。它以其简洁的操作界面和强大的功能,深受广大...
《HDTunePro 5.5:硬盘检测与健康管理的得力助手》 HDTunePro 5.5是一款高效且全面的硬盘检测工具,专为电脑用户设计,旨在帮助他们深入了解硬盘的工作状态,及时发现并预防可能出现的问题。这款软件以其易用性和...
日前,该公司对HD Tune进行了大规模升级,新推出的HD Tune Pro首个版本号即为3.0版,今后可能会采取普通版HD Tune 2.xx和HD Tune Pro 3.xx的两线升级路线。 HD Tune Pro相对之前HD Tune 2.55的升级包括: 传输速率...
《硬盘检测工具HD Tune Pro深度解析》 硬盘作为计算机存储数据的核心硬件,其稳定性和性能直接影响着系统的运行效率。为了确保硬盘的健康状态并优化其性能,一款专业的硬盘检测工具至关重要,而HD Tune Pro就是这样...
【HDTune 硬盘检测工具】 HDTune是一款高效、易用的硬盘检测工具,主要用于硬盘健康状况检查、性能测试以及故障诊断。这款软件适用于个人用户和专业技术人员,可帮助他们对计算机的硬盘进行深入分析,确保数据的...
HD Tune功能解读 1:基准(磁盘性能)测试 启动软件后,将首先会显示出硬盘的型号及当前的温度,默认显示为磁盘基本测试界面,在此用户可以通过点击“开始”按钮,对硬盘的读写性能进行检测,主要包括读取及写入...
标题中的“硬盘检测工具HD Tune专业版5.6”指的是一个专门用于检查和分析硬盘性能的专业软件。HD Tune是一款广受好评的硬盘诊断工具,它提供了多种功能来帮助用户了解硬盘的健康状况、性能和潜在问题。专业版通常...
HDTune Pro便是一款广受好评的硬盘检测软件,特别是它的5.00注册版,更是集多种功能于一身,帮助用户全面了解硬盘的健康状态。本文将详细解析这款工具的功能、使用方法及其带来的优势。 HDTune Pro 5.00 注册版是...
《HDTunePro4.5:硬盘检测与性能优化的专业工具》 HDTunePro4.5是一款专门针对硬盘性能测试、健康检查和故障诊断的软件,尤其在IT行业内广泛被技术人员所使用。这款工具以其易用性、全面性和准确性赢得了用户的好评...
HD Tune Pro 5.5 汉化破解版(支持Win8)- 专业的硬盘测试必备工具 大眼仔版
《全面解析HDTunePro4.6:硬盘性能检测利器》 HDTunePro是一款备受赞誉的硬盘诊断和性能测试工具,尤其在版本4.6中,它以其强大的功能和易用性赢得了广大用户的一致好评。这款软件是硬盘健康管理的重要助手,能够...
HD Tune Pro是一款强大的硬盘检测工具,专为用户提供全面的硬盘健康状态检查、性能测试、错误扫描以及温度监控等功能。这款v5.6版本是中文绿色版,意味着它无需安装即可直接运行,对于用户来说十分方便。 一、硬盘...
HDtune是一款强大的硬盘检测工具,它为用户提供了一种便捷的方式来检查和监控硬盘的状态,确保数据的安全性。这款工具在IT行业中被广泛使用,尤其对于系统管理员和电脑维修人员来说,是必不可少的诊断工具之一。 ...
《硬盘检测与坏道修复:深入理解Hd Tune专业版5.0》 在IT领域,数据安全至关重要,而硬盘作为存储数据的核心设备,其健康状况直接影响到数据的完整性和可靠性。Hd Tune专业版5.0是一款强大的硬盘检测与坏道修复工具...
JBL Tune 120TWS 用户配置手册 JBL Tune 120TWS 用户配置手册是 JBL 公司发布的一款真正无线入耳式耳机的用户手册,该手册详细介绍了 JBL Tune 120TWS 的产品特点、技术规格、性能优势和使用方法等内容。 JBL Tune...
HD Tune Pro是一款小巧易用的硬盘检测工具软件,尽管非常小巧但功能强大,HD Tune Pro也适用于移动硬盘检测工具。 主要功能有硬盘传输速率检测,健康状态检测,温度检测及磁盘表面扫描,坏道扫描等。另外,还能检测出...
【HdTune 绿色版】是一款高效且实用的硬盘检测工具,专为用户提供硬盘健康状况、性能测试、错误扫描等功能。它以其简洁的操作界面和强大的功能,在IT业界获得了广泛的认可。这款绿色版无需安装,下载后直接运行,...