性能测试四十四:性能优化思路

性能瓶颈定位整体思路,从前到后,从表象到内部
  1,首先排除压力机的性能情况,包括cpu、内存
  2,应用服务器的硬件指标,cpu,内存,网络IO(ethtool eth0),磁盘IO,如果发现某台机器的这四项中的任何一项到达瓶颈,那么这台机器在这一方面就到达瓶颈了
  3,其他服务器,比如数据库服务器,依赖的其他应用服务器
  4,看应用服务器的日志,tomcat下看的是catalina.out,用tail -200 catalina.out ,看cause by:xxx TimeOut
  5,tps比较低,应用服务器cpu比较高,jvisualvm、jprofiler看下java进程,消耗cpu的方法
  6,tps比较低,应用服务器cpu也比较低,可能是java程序的线程阻塞或死锁,也用jvisualvm看,如果红色的线程比较多,就是阻塞的原因(blocked、timed_waiting),jstack pid
  7,tps比较低,响应时间比较长,首先要先弄清楚请求的流向,比如:LR-->nginx-->tomcat-->java-->数据库-->缓存-->外部依赖--返回,如果排除到其他的问题,可以在java代码加时间戳的方法来定位响应时间比较长的问题
  8,tps缓慢降低,或大幅降低,tps大幅波动,用jmap或者jvisualvm进行堆内存dump,用jstat -gcutil,看看是否有内存泄露趋势,Jvm的FullGC是否频繁(单次FullGC消耗的时间FGCT/FGC,最好不要超过200毫秒)
  9,排查连接数相关的内容,包含tomcat的连接数、mysql的连接数,某端口的连接数:netstat -an|grep 8080 | wc -l

Tomcat连接数相关
关于连接数,要看2方面,首先是中间件最大配置的连接数,然后就是当前连接数
tomcat的当前连接数用netstat可以看,略。最大连接数在
一般tomcat需要设置的参数,第一个就是连接数在conf/server.xml里配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

mysql连接数:
maxThreads="200" 表示最多同时处理200个连接,默认值是200,可以改为2000,一般都是上千的,看具体配置
acceptCount="100" 当同时连接的人数达到maxThreads时,还可以接收排队的连接,超过这个连接的则直接返回拒绝连接。默认值为100 ,可以改为500,看具体配置
第二个jvm的参数,在bin目录下的catalina.sh第二行插入就行

数据库架构的调优
  --读写分离:主从配置,AB主从关系,写A同步到B,读B
  --分库分表:根据一个id来路由库名和表名,id%10,1202922292
    user_1
    user_2
    user_3
    ...
    user_10

  --硬件调优
    普通磁盘
    SSD
    fusionIO卡

常见的一些sql优化方案
  1、在 where 及 order by 涉及的列上建立索引,避免全表扫描,索引不要太多,一个表不要超过4个索引
  2、避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
  3、查询语句中不要使用 *,减少内存使用
  4、尽量减少子查询(嵌套查询),使用关联查询(left join,right join,inner join)替代
  5、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代
  6、or 的查询尽量用 union或者union all 代替,(在确认没有重复数据或者不用剔除重复数据时,union all会更好)
  7、合理的增加冗余的字段(减少表的联接查询)
  8、建表的时候能使用数字类型的字段就使用数字类型(type,status...),数字类型的字段作为条件查询比字符串的快

应用程序架构调优
  代码优化原则
  1、使用对象池减少对重复对象的创建;
  2、调整对后端的连接
  3、增加本地缓存
  4、如果不涉及事务的情况下,考虑使用Nosql进行存储
  5、一次请求合并多次操作。
  6、由串行修改为并行操作
  7、同步修改为异步

原文地址:https://www.cnblogs.com/zhongyehai/p/10336328.html

时间: 2024-10-02 23:43:10

性能测试四十四:性能优化思路的相关文章

NeHe OpenGL教程 第四十四课:3D光晕

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十四课:3D光晕 3D 光晕 当镜头对准太阳的时候就会出现这种效果,模拟它非常的简单,一点数学和纹理贴图就够了.好好看看吧. 大家好,欢迎来到新的一课,在这一课中我们将扩展glCamera类,来实现镜头光晕的效果.在日常生活中,

QT开发(四十四)——流方法解析XML

QT开发(四十四)--流方法解析XML 一.流方法解析XML简介 QT 4.3开始,QT引入了两个新的类来读取和写入XML文档:QXmlStreamReader和QXmlStreamWriter. QXmlStreamReader类提供了一个快速的解析器通过一个简单的流API来读取良构的XML文档,是作为QT的SAX解析器的替代者出现的,比SAX解析器更快更方便.    QXmlStreamReader可以从QIODevice或QByteArray中读取数据.QXmlStreamReader以一

ActionScript3游戏中的图像编程(连载四十四,第3章开始)

3.1 Flash简单滤镜真相大揭秘 上一章,我们用Flash的滤镜仅仅模拟了Photoshop里面的两个简单样式(当然只是我们的参数设置得比较简单,Photoshop样式远比我们想象中的复杂),就已经困难重重,一波三折了,而且效果还不如Photoshop的细致.那么,到底是什么原因导致Flash的简单滤镜如此受限?Flash简单滤镜是如何实现的? 进入本节之前,先明确下简单滤镜的概念,在ActionScript中,滤镜可以分为两大类,简单滤镜和复杂滤镜,前者指可以通过Flash IDE直接设置

【Unity 3D】学习笔记四十四:路径渲染

路径渲染 路径渲染属于特效渲染组件,用于跟随运动中的游戏对象.首先在hierarchy视图中,创建一个球体.然后在菜单导航栏中选择component--effects--trial renderer即可将路径渲染组件添加至该球体对象中. cast shadows:显示阴影效果. receive shadows:接受阴影效果. materials:材质. size:渲染的材质数量,可添加或删除. element 0:渲染材质文件. use light probes:是否使用光线探头. light

Android项目实战(四十四):Zxing二维码切换横屏扫描

原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=".CaptureActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> 这时候扫描

“全栈2019”Java第四十四章:继承

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第四十四章:继承 下一章 "全栈2019"Java第四十五章:super关键字 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组". 全栈工

第四十四章

第四十四章1 听罗博士讲述名人的烦恼 名与身孰亲? 名气与身体哪个更重要? 名气固然是有用的,然而不能因此放弃身体. 各位朋友大家好,今天我们接着来聊<道德经>.我们来看看老子老先生带给我们什么样的人生启发了. 今天聊第四十四章,这是新的一章了,这一章实际跟我们的人生真是有很大的关系了,因为我这个音频,除了在我微信公众号刊出之外,还在喜马拉雅播出,喜马拉雅的编辑曾经跟我说:“罗老师您最近能不能讲讲养生的内容啊?”我接下来会给大家讲中医的内容的,但是您说我讲的<道德经>就不是养生吗?

【WPF学习】第四十四章 图画

原文:[WPF学习]第四十四章 图画 通过上一章的学习,Geometry抽象类表示形状或路径.Drawing抽象类扮演了互补的角色,它表示2D图画(Drawing)--换句话说,它包含了显示矢量图像或位图需要的所有信息. 尽管有几类画图类,但只有GeometryDrawing类能使用已经学习过的几何图形.它增加了决定如何绘制图形的画笔和填充细节.可将GeometryDrawing对象视为矢量插图中的形状.例如,可将标准的窗口元文件格式(.wmf)转换成准备插入用户界面的GeometryDrawi

程序员的奋斗史(四十四)——大学断代史(八)——大学的友谊

文/温国兵 我不是一个善于表达的人,但很庆幸大学里结实了几个知己. 原本我是其他寝室的,缘分使然,让我和现在的室友相聚.和好友A.好友B.好友C之间发生了太多太多,以至于太多回忆从脑海中隐隐浮现.A在我的正前方,无数个夜晚不知道他在被窝里做些什么,我睡了很久还依稀可以听见他的声音.大学和A同学谈得最多,每次都是相当长的时间,在我的心里,一直把他当做大哥.每一次谈话都从中收获颇丰,增长不少见识.也是A同学让我变得比以前开朗.同一件事情,他比较乐观,我比较悲观:他看到最多的是希望,我看到最多的是绝望

程序猿的奋斗史(四十四)——大学断代史(八)——大学的友谊

文/温国兵 我不是一个善于表达的人,但非常庆幸大学里结实了几个知己. 原本我是其它寝室的,缘分使然.让我和如今的室友相聚. 和好友A.好友B.好友C之间发生了太多太多,以至于太多回顾从脑海中隐隐浮现.A在我的正前方.无数个夜晚不知道他在被窝里做些什么,我睡了非常久还依稀能够听见他的声音. 大学和A同学谈得最多,每次都是相当长的时间,在我的心里,一直把他当做大哥. 每一次谈话都从中收获颇丰,增长不少见识.也是A同学让我变得比曾经开朗.同一件事情,他比較乐观.我比較悲观.他看到最多的是希望.我看到最