性能优化

前端性能优化----reflow(回流)和repaint(重绘)

人走茶凉 提交于 2020-01-12 17:42:51
什么是reflow和repaint(原文链接:http://www.cnblogs.com/Peng2014/p/4687218.html) reflow: 例如某个子元素样式发生改变,直接影响到了其父元素以及往上追溯很多祖先元素(包括兄弟元素),这个时候浏览器要重新去渲染这个子元素相关联的所有元素的过程称为回流。 reflow: 几乎是无法避免的。现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显 示与隐藏)等,都将引起浏览器的 reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲染。通常我们都无法预估浏览器到底会 reflow 哪一部分的代码,它们都彼此相互影响着。 repaint: 如果只是改变某个元素的背景色、文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器 repaint(重绘)。repaint 的速度明显快于 reflow。 下面情况会导致reflow发生 1:改变窗口大小 2:改变文字大小 3:内容的改变,如用户在输入框中敲字 4:激活伪类,如:hover 5:操作class属性 6:脚本操作DOM 7:计算offsetWidth和offsetHeight 8:设置style属性 那么为了减少回流要注意哪些方式呢? 1

CentOS TCP 性能优化

孤人 提交于 2020-01-12 17:25:37
在/etc/sysctl.conf中加入 fs.file-max = 65535 net.ipv4.ip_forward = 1 net.ipv4.tcp_fin_timeout = 30 如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。 net.ipv4.tcp_max_syn_backlog = 10240 表示SYN队列的长度,默认为1024,加大队列长度为10240,可以容纳更多等待连接的网络连接数。 net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。 net.ipv4.tcp_synack_retries = 3 为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量 net.ipv4.tcp

学习笔记-linux性能优化实战-io性能篇-01linux文件系统是怎样工作的

久未见 提交于 2020-01-12 06:02:03
1.linux文件系统是怎样工作的 文件系统,本身是对存储设备上的文件,进行组织管理的机制。组织方式不同,就会形成不同的文件系统。 Linux 文件系统为每个文件都分配两个数据结构,索引节点(i ndex node)-被持久化存储到磁盘,和目录项(d irectory entry)-内核维护的一个内存数据结构。它们主要用来记录文件的元信息和目录结构。 在 Linux 中一切皆文件。不仅普通的文件和目录,就连块设备、套接字、管道等, 也都要通过统一的文件系统来管理 。 磁盘在执行文件系统格式化时,会被分成三个存储区域,超级块、索引节点区和数据块区。其中,超级块,存储整个文件系统的状态。索引节点区,用来存储索引节点。数据块区,则用来存储文件数据. 通过这张图,你可以看到,在 VFS 的下方,Linux 支持各种各样的文件系统,如 Ext4、XFS、NFS 等等。按照存储位置的不同,这些文件系统可以分为三类。 第一类是基于磁盘的文件系统,也就是把数据直接存储在计算机本地挂载的磁盘中。常见的 Ext4、XFS、OverlayFS 等,都是这类文件系统。第二类是基于内存的文件系统,也就是我们常说的虚拟文件系统。这类文件系统,不需要任何磁盘分配存储空间,但会占用内存。我们经常用到的 /proc 文件系统,其实就是一种最常见的虚拟文件系统。此外,/sys 文件系统也属于这一类

Spark 任务性能优化浅谈

北慕城南 提交于 2020-01-11 23:10:00
1 spark on yarn(cluster模式)框架 图1- 1 1.1 yarn组件概念 ResourceManager :负责集群的资源管理和分配。 NodeManager :每个节点的资源和任务管理器。 Application Master :YARN中每个Application对应一个AM进程,负责与RM协商获取资源,获取资源后告诉NodeManager为其分配并启动Container。 Container :YARN中的抽象资源。 1.2 spark组件概念 Driver :进行资源申请、任务分配并监督其运行状况等。 DAGScheduler :将spark job转换成DAG图。 TaskScheduler :负责任务(task)调度 2 spark shuffle 2.1 窄依赖与宽依赖 理解shuffle之前,需要先理解窄依赖和宽依赖。 窄依赖: 父RDD的每个分区都只被子RDD的一个分区依赖 例如map、filter、union等操作会产生窄依赖。 宽依赖: 父RDD的分区被子RDD的多个分区依赖 例如 groupByKey、reduceByKey、sortByKey等操作会产生宽依赖,会产生shuffle过程,也是划分stage依据。 图2- 1 2.2 Shuffle过程 图2- 2 Shuffle过程包括:shuffle write与shuffle

mysql-查询性能优化

梦想的初衷 提交于 2020-01-11 22:42:12
1、不要取出全部列,取出全部列,会让优化器无法完成索引覆盖扫描这类优化,还会为服务器带来额外的I/O、内存和CPU的消耗。应该严格禁止SELECT * 的写法。MySQL使用如下三种方式应用WHERE条件,从好到坏依次为:   1.1 在索引中使用WHERE条件来过滤不匹配的记录。这是在存储引擎层完成的。   1.2 使用索引覆盖扫描(Extra列中出现了Using index)来返回记录,直接从索引中过滤不需要的记录并返回命中的结果。这是在MySQL服务器层完成的,但无须在回表查询记录。   1.3 从数据表中返回数据,然后过滤不满足条件的记录(在Extra列中出现Using Where)。这在MySQL服务器层完成,MySQL需要先从数据表独处记录然后过滤。 上面的例子说明了好的索引很重要。 2、如果发现查询需要扫描大量的数据但值返回少数的行,那么可以尝试下面的技巧优化它:   2.1 使用索引覆盖扫描,把所有需要用的列都放到索引中,这样存储引擎无须回表获取对应行就可以返回结果了。   2.2 改变库表结构。例如使用单独的汇总表。   2.3 重写这个复杂的查询,让MySQL优化器能够以更优化的方式执行这个查询。 重构查询:   1、一个复杂查询还是多个简单查询;   2、切分查询;   例如: DELECT FROM message WHERE created < DATE

前端性能优化

你说的曾经没有我的故事 提交于 2020-01-11 15:01:11
一:静态资源优化: ①:合并css,js文件,制作雪碧图,减少http的请求次数; ②:静态资源cdn的分发;客户端可以通过最佳网络链路加载静态页面。 ③:js,css文件压缩,图片压缩,减少请求返回的数据量。 ④:静态资源缓存机制。 二:接口优化: ①:接口合并; ②:首屏合并,同构。 三:页面渲染速度优化: ①:css放在顶首:优先; ②:js放在底部:避免阻塞; ③:减少DOM元素数量; ④:img标签要宽高:减少重绘排版。 来源: https://www.cnblogs.com/zyb99812/p/12179744.html

Mysql 性能优化Explain详解

旧城冷巷雨未停 提交于 2020-01-10 13:25:06
explain 功能 我们在日常使用中,使用慢查询找到执行时间比较久的查询,然后使用SHOW STATUS、SHOW PROFILE、和explain做单条语句的分析。 使用explain关键字可以模拟优化器执行sql查询语句,从而知道Mysql是如何处理你的sql语句的。分析你的查询语句或者表结构的性能瓶颈。 具体可以分析哪些 表的读取顺序 数据读取操作的操作类型 哪些索引可以使用 哪些索引被实际使用 表之间的引用 每张表有多少行被优化器查询 使用语法 explain sql语句 得到了什么结果 expain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra 字段概要解释: id:选择标识符 select_type:表示查询的类型。 table:输出结果集的表 partitions:匹配的分区 type:表示表的连接类型 possible_keys:表示查询时,可能使用的索引 key:表示实际使用的索引 key_len:索引字段的长度 ref:列与索引的比较 rows:扫描出的行数(估算的行数) filtered:按表条件过滤的行百分比 Extra:执行情况的描述和说明 字段详细解释 一、 id SQL执行查询的顺序的标识 1. id相同时,执行顺序由上至下 2.

HBase性能优化

十年热恋 提交于 2020-01-10 01:53:28
一、HBase性能优化方案(一):表的设计 a.Pre-Creating Regions: 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。 b.RowKey原则: HBase中row key用来检索表中的记录,支持以下三种方式: • 通过单个row key访问:即按照某个row key键值进行get操作; • 通过row key的range进行scan:即通过设置startRowKey和endRowKey,在这个范围内进行扫描; • 全表扫描:即直接扫描整张表中所有行记录。 RowKey规则: 1、 越小越好 2、 Rowkey的设计是要根据实际业务来 3、 散列性: a) 取反 001 002 100 200 b) Hash c.Column Family 不要在一张表里定义太多的column family。目前Hbase并不能很好的处理超过2~3个column family的表。因为某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush

nginx性能优化调优之google-perftools

守給你的承諾、 提交于 2020-01-09 20:29:44
什么是google-perftools? google-perftools是google公司开发的一款针对 C/C++ 程序的性能分析开源工具,使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析 google-perftools包含四个工具,分别是:TCMalloc、heap-checker、heap-profiler和cpu-profiler,其中我们本次需要的一个工具TCMalloc是google-perftools的其中一个工具,用于优化内存分配的效率和速度,帮助在高并发的情况下很好的控制内存的使用 运维为什么要使用google-perftools? 使用google开发的google-perftools优化nginx和mysql的内存分配效率和速度,帮助在高并发的情况下控制内存的使用。但是,nginx的内存占用其实是很少的,一个进程占用的内存大概只有12M左右,所以google-perftools对nginx的优化效果可能不太明显 什么是TCMalloc工具? 上面已经说过TCMalloc是google-perftools的一个工具与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程序上提高了服务器在高并发情况下的性能,从而降低系统的负载如何为Nginx添加TCMalloc库支持,要安装TCMalloc库

nginx性能优化调优之google-perftools

柔情痞子 提交于 2020-01-09 20:23:18
什么是google-perftools? google-perftools是google公司开发的一款针对 C/C++ 程序的性能分析开源工具,使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析 google-perftools包含四个工具,分别是:TCMalloc、heap-checker、heap-profiler和cpu-profiler,其中我们本次需要的一个工具TCMalloc是google-perftools的其中一个工具,用于优化内存分配的效率和速度,帮助在高并发的情况下很好的控制内存的使用 运维为什么要使用google-perftools? 使用google开发的google-perftools优化nginx和mysql的内存分配效率和速度,帮助在高并发的情况下控制内存的使用。但是,nginx的内存占用其实是很少的,一个进程占用的内存大概只有12M左右,所以google-perftools对nginx的优化效果可能不太明显 什么是TCMalloc工具? 上面已经说过TCMalloc是google-perftools的一个工具与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程序上提高了服务器在高并发情况下的性能,从而降低系统的负载如何为Nginx添加TCMalloc库支持,要安装TCMalloc库