范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

9大高性能优化经验总结,强烈建议收藏

  性能优化基本属于Java高级岗的必备技能了,特备对于大流量的互联网应用至关重要@mikechen
  今天主要给大家介绍下9种性能优化的方法:
  1.代码
  之所以把代码放到第一位,是因为这一点最容易引忽视,比如拿到一个性能优化的需求以后,言必称缓存、异步等。
  实际上,第一步就应该是分析相关的代码,找出相应的瓶颈,再来考虑具体的优化策略。
  有一些性能问题,完全是由于代码写的不合理,通过直接修改一下代码就能解决问题的,比如for循环次数过多、作了很多无谓的条件判断、相同逻辑重复多次等,这样的优化成本是最低的。2.数据库
  1.SQL优化
  这里以MySQL为例,最常见的方式是,由自带的慢查询日志或者开源的慢查询系统定位到具体的出问题的SQL,然后使用explain、profile等工具来逐步调优,最后经过测试达到效果后上线。
  这里举几个优化的例子:
  1.查询优化
  对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
  2.避免null判断
  应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null
  3.避免全表扫描
  应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。
  应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描。
  in和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3)
  对于连续的数值,能用 between就不要用 in 了:select id from t where num between 1 and 3
  4.大数据量查询
  对于多张大数据量的表JOIN,要先分页再JOIN,否则逻辑读会很高。
  5.合理使用索引
  索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。
  一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。
  6.多使用数字型字段
  尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。
  这是因为引擎在处理查询和连 接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
  7.避免大数量
  尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。
  8.避免大事务
  尽量避免大事务操作,提高系统并发能力。2.连接池调优
  我们的应用为了实现数据库连接的高效获取、对数据库连接的限流等目的,通常会采用连接池类的方案,即每一个应用节点都管理了一个到各个数据库的连接池。
  随着业务访问量或者数据量的增长,原有的连接池参数可能不能很好地满足需求,这个时候就需要结合当前使用连接池的原理、具体的连接池监控数据和当前的业务量作一个综合的判断,通过反复的几次调试得到最终的调优参数。3.架构层面
  这一类调优包括读写分离、多从库负载均衡、水平和垂直分库分表等方面,一般需要的改动较大,但是频率没有SQL调优高,而且一般需要DBA来配合参与。
  3.分布式缓存
  缓存可以称的上是性能优化的利器,缓存主要用来存放那些读写比很高、很少变化的数据。
  什么情况适合用缓存?考虑以下两种场景:短时间内相同数据重复查询多次且数据更新不频繁,这个时候可以选择先从缓存查询,查询不到再从数据库加载并回设到缓存的方式。此种场景较适合用单机缓存。高并发查询热点数据,后端数据库不堪重负,可以用缓存来扛。
  使用缓存需要注意的问题:1.避免缓存失效
  把频繁修改的数据放入缓存,容易出现数据写入缓存后,应用还来不及读取缓存,数据就已经失效的情形,徒增系统负担。2.缓存热点数据
  缓存使用的内存资源非常宝贵,只能将最新访问的数据缓存起来,而把历史数据清理出缓存,即缓存资源应该留给20%的热点数据。3.数据不一致性
  一般会对缓存设置失效时间,超过失效时间,就要从数据库重新加载。
  因此应用要忍受一定时间的数据不一致,另一种策略是数据更新时立即更新缓存,不过这也会带来更多的系统开销和事务一致性的问题。4.缓存可用性
  业务发展到一定阶段时,缓存会承担大部分数据访问的压力,数据库已经习惯了有缓存的日子,所以当缓存服务器崩溃时,数据库会因为完全不能承受如此大的压力而宕机,进而导致整个网站不可用,这种情况被称作缓存雪崩,发生这种故障,甚至不能简单地重启缓存服务器和数据库服务器来恢复网站访问。
  解决方式:
  1)缓存热备(当某台服务器宕机时,将缓存访问切换到热备服务器上;
  2)缓存服务器集群。5. 缓存预热
  缓存中存放的是热点数据,热点数据是缓存系统用LRU对不断访问的数据筛选出来的,这个过程需要较长的时间。
  新启动的缓存系统没有任何数据,此时系统的性能和数据库负载都不太好。因此可以选择在启动缓存是就把热点数据预加载好。6.缓存穿透
  因为不恰当的业务或恶意攻击,持续高并发地访问某一个不存在的数据,如果缓存不保存该数据,就会有大量的请求压力落在数据库上。
  简单的解决方式是把请求的不存在的数据也放进缓存,其value是null。4.异步化
  针对某些客户端的请求,在服务端可能需要针对这些请求做一些附属的事情,这些事情其实用户并不关心或者用户不需要立即拿到这些事情的处理结果,这种情况就比较适合用异步的方式处理这些事情。
  异步化的作用:缩短接口响应时间,使用户的请求快速返回,用户体验更好。避免线程长时间处于运行状态,这样会引起服务线程池的可用线程长时间不够用,进而引起线程池任务队列长度增大,从而阻塞更多请求任务,使得更多请求得不到技术处理。线程长时间处于运行状态,可能还会引起系统Load、CPU使用率、机器整体性能下降等一系列问题,甚至引发雪崩。异步的思路可以在不增加机器数和CPU数的情况下,有效解决这个问题。
  比如:使用消息队列(MQ)中间件服务,MQ天生就是异步的。
  一些额外的任务,可能不需要我这个系统来处理,但是需要其他系统来处理,这个时候可以先把它封装成一个消息,扔到消息队列里面,通过消息中间件的可靠性保证把消息投递到关心它的系统,然后让这个系统来做相应的处理。
  再比如C端在完成一个提单动作以后,可能需要其它端做一系列的事情,但是这些事情的结果不会立刻对C端用户产生影响,那么就可以先把C端下单的请求响应先返回给用户,返回之前往MQ中发一个消息即可,而且这些事情理应不是C端的负责范围,所以这个时候用MQ的方式,来解决这个问题最合适。5.Web前段
  Web前端指网站业务逻辑之前的部分,包括:浏览器加载网站视图模型图片服务CDN服务等
  主要优化手段有优化浏览器访问,使用反向代理,CDN等。1.浏览器访问优化(1)减少http请求
  HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要简历通信链路,进行数据传输,而在服务器端,每个HTTP都需要启动独立的线程去处理,这些通信和服务的开销都很昂贵,减少HTTP请求的数目可有效提高访问性能。
  减少HTTP请求的主要手段是:合并CSS,以及压缩CSS大小合并JavaScript,以及压缩JS大小合并图片
  将浏览器一次访问需要的JavaScript,CSS合并成一个文件,这样浏览器就只需要一次请求。多张图片合并成一张,如果每张图片都有不同的超链接,可通过CSS偏移响应鼠标点击操作,构造不同的URL。(2)使用浏览器缓存
  对一个网站而言,CSS,JavaScript,Logo,图标等这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次HTTP请求都需要的,如果将这些文件缓存在浏览器中,可以极好地改善性能。通过设置HTTP头中Cache-Control和Expires属性,可设定浏览器缓存,缓存时间可以是数天甚至是几个月。有时候,静态资源文件变化需要及时应用到客户端浏览器,这种情况可以通过改变文件名实现,比如一般会在JavaScript后面加上一个版本号,使浏览器刷新修改的文件。(3)启用压缩
  在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效较少通信传输的数据量。文本文件的压缩效率科大80%以上。(4)CSS放在页面最上面,JavaScript放在页面最下面
  浏览器会在下载完全部CSS之后对整个页面进行渲染,因此最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。JS则想法,浏览器在加载JS后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此JS最好放在页面最下面。(5)减少Cookie传输
  一方面,Cookie包含在每次请求和响应中,太大的Cookie会严重影响数据传输,因此哪些数据需要写入Cookie需要慎重考虑,尽量减少Cookie中传输的数据量。另一方面,对于某些静态资源的访问,如CSS,JS等,发送Cookie没有意义,可以考虑静态资源使用独立域名访问,避免请求静态资源时发送Cookie,减少Cookie传输的次数。2.CDN加速
  CDN(Content Distribute Network,内存分发网络)的本质上仍然是一个缓存,而且将数据缓存在离用户最近的地方,是用户以最快速度获取数据,即所谓网络访问第一跳。
  CDN一般缓存的是静态资源,如图片,文件,CSS,Script脚本,静态网页等,但是这些文件访问频率很高,将其缓存在CDN可极大改善网页的打开速度。3.反向代理
  传统代理服务器位于浏览器一侧,代理浏览器将HTTP请求发送到互联网上,而反向代理服务器位于网站机房一侧,代理网站Web服务器接收HTTP请求。
  和传统代理服务器可以保护浏览器安全一样,反向代理服务器也具有保护网站安全的作用,来自互联网的访问请求必须经过代理服务器,相当于在Web服务器和可能的网络攻击之间建立了一个屏障。
  除了安全功能,代理服务器也可以通过配置缓存功能加速Web请求,当用户第一次访问静态内容的时候,静态内容就被缓存在反向代理服务器上,这样当其他用户访问该静态内容的时候,就可以直接从反向代理服务器返回,加速Web请求响应速度,减轻服务器负载要。6.服务化
  做服务化最基础的是按业务做服务拆分,避免跨业务间的互相影响,数据和服务同时拆分。同一个业务内部我们还按计算密集型/IO密集型的服务拆分、C端/B端服务拆分、核心/非核心服务拆分、高频服务单独部署等原则做拆分。7.硬件升级
  硬件问题对性能的影响不容忽视。
  举一个例子:一个DB集群经常有慢SQL报警,业务排查下来发现SQL都很简单,该做的索引优化也都做了,后来DBA同学帮忙定位到问题是硬件过旧导致,将机械硬盘升级成固态硬盘之后报警立马消失了,效果立竿见影!8.搜索引擎
  复杂查询以及一些聚合计算不适合在数据库中做,可以利用搜索引擎来实现,另外搜索引擎还可以帮我们很好的解决跨库、跨数据源检索的场景。9.产品逻辑优化
  业务逻辑优化经常会容易被忽略,但效果却往往比数据库性能优化、JVM调优之类的来的更明显。
  举一个例子,12306春运抢火车票的场景,由于访问的人多,用户点击"查票"之后系统会非常卡,进度条非常慢,作为用户,我们会习惯性的再去点"查票",可能会连续点个好几次。
  假设平均一个用户点5次,则后端系统负载就增加了5倍!而其中80%的请求是重复请求。
  这个时候我们可以通过产品逻辑的方式来优化,比如,在用户点击查询之后将"按钮置灰",或者通过JS控制xx秒只能只能提交一次请求等,有效的拦截了80%的无效流量。
  以上!
  更多架构技术干货,私信【架构】即可查看我原创的300期+BAT架构技术系列文章与1000+大厂面试题答案合集。

传奇3高爆版游戏详情介绍以及游戏扛米攻略玩法大家好,我是老九最近也是玩上传奇3高爆版,有一套练习室系统,升级速度相对较快。升级可以很容易地从三个方面列在等级列表上任务战斗怪物和练习室。即使这个传奇是同一个职业,它也可以演奏不光遇测试服消失的物品,官方不会进行补偿?怎么一个懒字了得光遇测试服消失的物品,官方不会进行补偿?怎么一个懒字了得前言大家好,我是喜欢玩游戏聊游戏的孟婆小叔。测试服的资格,官方已经关闭通道。也就是说,在关闭之后,不管你以什么方式,获取的资最伟大的教育,竟然是妈妈的情绪!都说好妈妈胜过好老师。母亲的母到底包含什么样的生命意义呢?其实,好妈妈就是三个字。第一个字是静。很多妈妈眼尖,一眼能看出孩子三个问题,而且立马指出还反复强化,甚至当着更多人的面说我OPPOFindX5Pro天玑版实测出炉,印证性能全开,冷静输出上个月OPPOFindX5Pro天玑版和骁龙版正式发布。OPPOFindX5Pro天玑版搭载天玑9000在性能和能效上都有着十分良好的表现,让众多网友直呼痛快,这也让网友们对于天玑从3699元跌至1899元,5G麒麟990鸿蒙OS,花粉幸福来得太突然了对于一款智能手机来说,每个人的需求都不一样,有的人要的是信号好,因为经常出差需要手机信号不错的手机,还有的喜欢拍照的,就更加看重拍照性能还有的是对于手机性能有要求,能够流畅运行主流郭碧婷疑有孕,向佐贴心似热恋情侣!同是豪门婚姻奚梦瑶却被骂惨哈喽啊!友友们,今天星期四喽,再坚持一天就是美好的周末啦!!近日,有网友晒出一段偶遇向佐郭碧婷夫妇逛超市的视频。视频中,向佐和郭碧婷牵手搂抱,宛如热恋情侣,郭碧婷看上去身形圆润了不随笔关于房地产税降速和美联储加息的思考一张一弛,文武之道也。礼记杂记下最近两天,有两项重要新闻值得关注房地产和美联储加息,我们就从这两件事中看当前经济形势及政策趋向。01稳字当头的房地产在昨天召开的国务院金融稳定发展委大叔住邮轮23年,不用自己做饭洗衣服倒垃圾,自称是ampampquot最幸福的人ampampquot对不少人来说,坐邮轮去旅游是一种特殊的度假体验。坐上豪华邮轮,一边领略海洋的绝美景色,一边享受VIP贵宾式的服务,把工作烦恼生活琐事都抛掷脑后,这简直就是许多人梦寐以求的奢华之旅。江西这2款酒,以前吊打茅五,现在为何不行了?江西,在我们印象当中一直都是属于很低调的存在,但它的人文美景却独树一帜,物华天宝,人杰地灵,是专属于江西的代名词,这里有瓷都之称的景德镇,也有人文圣山的庐山,总之其他省份有的江西都户外活动正当时,这些事千万别碰春天,祖国大地迎来了最美的时光,婺源的油菜花伊犁的杏花林芝的桃花毕节的杜鹃花,春风开启了一场花的盛宴。春暖花开的时节,正是开展户外活动的好时候。前段时间受疫情的影响,大家已经在家闷蓝莓开花是蓝色的吗?蓝莓对于很多人而言并不陌生,然而蓝莓花是什么模样,很多人却是不得而知的。阳春三月,是花的盛会。穿过城市气息浓重的厂房,映入眼帘的是花期正旺的果树,桃花灼灼梨花洁白,走过一条乡间小道
北京有一废弃景区,投资数亿号称亚洲最大,如今荒废无人问津北京有一废弃景区,投资数亿号称亚洲最大,如今荒废无人问津北京有哪些景区让大家印象更深刻呢?相信这个问题一提出来,大家总会给出很多的答案,比如那金碧辉煌气势恢宏的故宫,虽然残缺不全,潘长江为什么不想女儿进娱乐圈?有一次,潘长江对女儿说我给你挣的钱,你这辈子都花不完,你就开个超市,别进娱乐圈,你不适合!潘阳是潘长江唯一的女儿,正所谓知女莫若父,随着年龄的增长,潘长江意识到女儿对演艺圈似乎很有全世界最不缺黑历史的女明星杨幂教你什么叫为自己而活杨幂参加一个综艺节目中,一位男嘉宾犀利吐槽杨幂可能你要听点实话这样子,就是我觉得你本人跟照片,还是有点差。在娱乐圈经历过大风大浪的大幂幂,机智回应没关系,反正我的受众群也不是你们。刘思瑶整容实锤?整容医院拿她当成功案例,网友方脸能整吗引子整容在当今社会,是非常常见的事情,尤其是网络上的美女,有几个是天然妈生脸,从没做过整容手术的?微整确实可以让人变美,但大部分人都整惨了,因为太贪心。要说美女网红哪个火,刘思瑶肯这7位男演员才叫爱情专一,没有绯闻,各个都是不忘初心的好男人文叶编辑娱阿姨前有大S汪小菲官宣离婚,后有李湘王岳伦发布离婚声明。作为公众人物,能在娱乐圈谈一场不分手的恋爱实属不易。但娱圈中有这7位男演员,就喜欢悄悄地幸福,然后在不经意间羡煞旁美国发动东京大轰炸,造成50多万人伤亡,东京变成人间炼狱二战中美国与日本的纠葛除了那两枚轰动世界的原子弹之外,此前美国对日本的大轰炸也是让人咋舌。这就是著名的东京大轰炸,东京建筑总量的四分之一毁于一旦,死亡人数之多更是都创下二战单次空袭CBA坏消息!辽宁男篮潜力新星确定赛季报销,无缘竞争总冠军第一阶段CBA比赛结束之后,辽宁男篮没有国家队任务的球员,休整一周之后,就开启了紧张的备战工作。从辽篮的训练来看,吴昌泽和刘志轩并没有出现,从CBA官方公布的伤病名单,吴昌泽因为手泡澡久会猝死?还能泡吗?研究正确泡澡,可降低心血管疾病风险最近天气冷了,开始越来越多人喜欢往澡堂里奔去,因为泡澡的感受让人感觉温暖放松。然而,习以为常的泡澡生活或许会酿成一次悲剧的发生。正值冬日,东北一个六旬黄伯伯在澡堂泡澡,结果泡着泡着澳大利亚欲建地球黑匣子,记录人类文明毁灭数据,可给谁看?每一架飞机上都安装有一个难以被摧毁的黑匣子,它可以记录飞机失事前30分钟的数据,包括谈话录音,技术参数等等,之后研究人员会调用这些数据并调查飞机失事的原因。图注飞机黑匣子,它其实不空中客车公司将为欧空局建造Ariel系外行星探测卫星欧空局(ESA)和空中客车公司于12月6日在巴黎欧空局总部签署了一项合同,以推进遥感红外系外行星探测卫星Ariel的设计和建造,计划于2029年发射。Ariel卫星是ESA设想的三滴滴突然退市!柳传志还没出来走两步,就已经摔了一个大跟头天下热点,公子来说,进来的老铁等下别急着退出,精彩爆料都在后面。滴滴在这两天可谓是风光无限啊,自从滴滴官网发文称要从美国退市,可谓是一石激起千层浪,就是不知道这个浪能有多大!这两天