性能优化

nginx 性能优化

瘦欲@ 提交于 2020-02-06 16:39:11
nginx 性能优化 1,Nginx运行的工作进程 Nginx运行工作进程个数一般设置为CPU的核心数,或者核心数*2.我们可以使用 lscpu 或者 cat /proc/cpuinfo 来查看cpu的核心数 2,Nginx运行CPU亲和性 配置如下 2核配置 worker_processes 2; worker_cpu_affinity 01 10; 4核配置: worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; 8核: worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; worker_processes最多开启8个,8个以上性能就不会在提升了,而且容易出问题。 3,Nginx最大打开文件数 worker_rlimit_nofile 65535; 但是我们一般不会这样设置,我们会更改系统文件句柄(最大打开数) 文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置 * soft nofile 65535 * hard nofile 65535 4,Nginx

String字符串性能优化的几种方案

此生再无相见时 提交于 2020-02-04 14:53:24
String字符串是系统里最常用的类型之一,在系统中占据了很大的内存,因此,高效地使用字符串,对系统的性能有较好的提升。 针对字符串的优化,我在工作与学习过程总结了以下三种方案作分享: 一.优化构建的超大字符串   验证环境:jdk1.8   反编译工具:jad 1.下载反编译工具jad,百度云盘下载: 链接:https://pan.baidu.com/s/1TK1_N769NqtDtLn28jR-Xg 提取码:ilil 2.验证 先执行一段例子1代码: 1 public class test3 { 2 public static void main(String[] args) { 3 String str="ab"+"cd"+"ef"+"123"; 4 } 5 } 执行完成后,用反编译工具jad进行反编译:jad -o -a -s d.java test.class 反编译后的代码: 1 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. 2 // Jad home page: http://www.kpdus.com/jad.html 3 // Decompiler options: packimports(3) annotate 4 // Source File Name: test.java 5

性能优化-索引优化SQL的方法

拥有回忆 提交于 2020-02-04 11:27:33
4、索引优化SQL的方法 1、索引的维护及优化(重复及冗余索引) 增加索引会有利于查询效率,但会降低insert,update,delete的效率,但实际上往往不是这样的,过多的索引会不但会影响使用效率,同时会影响查询效率,这是由于数据库进行查询分析时,首先要选择使用哪一个索引进行查询,如果索引过多,分析过程就会越慢,这样同样的减少查询的效率,因此我们要知道如何增加,有时候要知道维护和删除不需要的索引 2、如何找到重复和冗余的索引 重复索引: 重复索引是指相同的列以相同的顺序建立的同类型的索引,如下表中的 primary key和ID列上的索引就是重复索引 create table test( id int not null primary key, name varchar(10) not null, title varchar(50) not null, unique(id) )engine=innodb; 冗余索引: 冗余索引是指多个索引的前缀列相同,或是在联合索引中包含了主键的索引,下面这个例子中key(name,id)就是一个冗余索引。 create table test( id int not null primary key, name varchar(10) not null, title varchar(50) not null, key(name,id)

ES索引写入性能优化

喜夏-厌秋 提交于 2020-02-04 10:29:10
最近一直想总结一篇es的优化文章,看了几篇博客,总结一下,方便以后遇上es线上优化问题有参考之处: 1、用bulk批量写入 es批量写入时,应该使用es的bulk写入,bulk写入还是应该考虑es的node数,shard分片数。业务中尽量将写入es的数据聚合起来分批写入。 bulk批量写入的性能比你一条一条写入大量的document的性能要好很多。但是如果要知道一个bulk请求最佳的大小,需要对单个es node的单个shard做压测。先bulk写入100个document,然后200个,400个,以此类推,每次都将bulk size加倍一次。如果bulk写入性能开始变平缓的时候,那么这个就是最佳的bulk大小。并不是bulk size越大越好,而是根据你的集群等环境具体要测试出来的,因为越大的bulk size会导致内存压力过大,因此最好一个请求不要发送超过10mb的数据量。 先确定一个是 bulk size ,此时就尽量是单线程,一个 es node,一个shard ,进行测试。看看单线程最多一次性写多少条数据,性能是比较好的。 2、使用多线程将数据写入es 单线程发送bulk请求是无法最大化es集群写入的吞吐量的。如果要利用集群的所有资源,就需要使用多线程并发将数据bulk写入集群中。为了更好的利用集群的资源,这样 多线程并发写入,可以减少每次底层磁盘fsync的次数和开销

app性能优化

萝らか妹 提交于 2020-02-03 07:06:06
性能优化简图 打造一个高质量的应用应该以4个方向为目标:快、稳、省、小。 快:使用时避免出现卡顿,响应速度快,减少用户等待的时间,满足用户期望。 稳:减低 crash 率和 ANR 率,不要在用户使用过程中崩溃和无响应。 省:节省流量和耗电,减少用户使用成本,避免使用时导致手机发烫。 小:安装包小可以降低用户的安装成本。 要想达到这4个目标,具体实现是在右边框里的问题:卡顿、内存使用不合理、代码质量差、代码逻辑乱、安装包过大,这些问题也是在开发过程中碰到最多的问题,在实现业务需求同时,也需要考虑到这点,多花时间去思考,如何避免功能完成后再来做优化,不然的话等功能实现后带来的维护成本会增加。 卡顿优化 Android 应用启动慢,使用时经常卡顿,是非常影响用户体验的,应该尽量避免出现。卡顿的场景有很多,按场景可以分为4类:UI 绘制、应用启动、页面跳转、事件响应,如图: 卡顿场景分析 这4种卡顿场景的根本原因可以分为两大类: 界面绘制。主要原因是绘制的层级深、页面复杂、刷新不合理,由于这些原因导致卡顿的场景更多出现在 UI 和启动后的初始界面以及跳转到页面的绘制上。 数据处理。导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况,一是数据在处理 UI 线程,二是数据处理占用 CPU 高,导致主线程拿不到时间片,三是内存增加导致 GC 频繁,从而引起卡顿。 引起卡顿的原因很多

性能优化-图片优化

前提是你 提交于 2020-02-01 22:27:53
前端性能优化 图片优化 先来看一张JPG图片有损压缩的解析过程 png8/png24/png32之间的区别 png8 —— 256色 + 支持透明 png24 —— 2^24色 + 不支持透明 png32 —— 2^24色 + 支持透明 每种图片格式都有自己的特点,针对不同的业务场景选择不同的图片格式很重要 jpg有损压缩,压缩率高,不支持透明 png支持透明,浏览器兼容好 webp压缩程度更好,在ios webview有兼容性问题 svg矢量图,代码内嵌,相对较小,图片样式相对简单的场景 jpg —— 大部分不需要透明图片的业务场景 png —— 大部分需要透明图片的业务场景 webp —— 安卓全部 svg矢量图 —— 图片样式相对简单的业务场景 进行图片压缩:针对图片真实情况,舍弃一些相对无关紧要的色彩信息 css雪碧图(精灵图):把你的网站用到的一些图片整合到一张单独的图片中以达到减少网站的http请求数量 image inline:将图片的内容内嵌到html当中以减少http请求数量 使用矢量图: 使用SVG进行适量图的绘制,使用iconfont解决icon问题 在安卓下使用webp: WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和

性能优化-css,js的加载与执行

无人久伴 提交于 2020-02-01 22:09:10
前端性能优化 css,js的加载与执行 javascript是单线程的 一个网站在浏览器是如何进行渲染的呢? html页面加载渲染的过程 html渲染过程的一些特点 顺序执行,并发加载 词法分析 并发加载 并发上限 是否阻塞 依赖关系 引入方式 css阻塞 css head中阻塞页面的渲染 css阻塞js的执行 css不阻塞外部脚本的加载 js阻塞 直接引入的js阻塞页面的渲染 js不阻塞资源的加载 js顺序执行,阻塞后续js逻辑的执行 依赖关系 页面渲染依赖于css的加载 js的执行顺序的依赖关系 js逻辑对于DOM节点的依赖关系 js引入方式 直接引入 defer async 异步动态引入js 加载和执行的一些优点 css样式表置顶 用link代替import js脚本置地 合理使用js的异步加载能力 可以使用Chrome浏览器的performance工具分析页面的加载过程 来源: https://www.cnblogs.com/ygjzs/p/12250307.html

性能优化可使用的工具

别来无恙 提交于 2020-02-01 00:46:11
在分析 CPU、内存、磁盘等的性能指标时,有几种工具是高频出现的,如 top、vmstat、pidstat,这里稍微总结一下: CPU:top、vmstat、pidstat、sar、perf、jstack、jstat; 内存:top、free、vmstat、cachetop、cachestat、sar、jmap; 磁盘:top、iostat、vmstat、pidstat、du/df; 网络:netstat、sar、dstat、tcpdump; 应用:profiler、dump分析。 上述的很多工具,大部分是用于查看系统层指标的,在应用层,除了有 JDK 提供的一系列工具,一些商用的产品如 gceasy.io(分析 GC 日志)、fastthread.io(分析线程 dump 日志)也是不错的。 排查 Java 应用的线上异常或者分析应用代码瓶颈,可以使用阿里开源的 Arthas ,这个工具非常强大,下面简单介绍下。 Arthas 主要面向线上应用实时诊断,解决的是类似线上应用异常了,需要在线进行分析和定位」的问题,当然,Arthas 提供的一些方法调用追踪工具,对我们排查诸如「慢查询」等问题,也是非常有帮助的。Arthas 提供的主要功能有: 获取线程统计,如线程持有的锁统计、CPU 利用率统计等; 类加载信息、动态类加载、方法加载信息; 调用栈追踪,调用耗时统计; 方法调用参数

[MySQL]Query的性能优化分析(二)

北慕城南 提交于 2020-01-30 04:33:24
MySQL Query Optimizer MySQL Query Optimizer是MySQL中专门负责优化SELECT语句的模块,其主要功能是:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供MySQL认为最优的执行计划 1 。 优化器执行过程: 客户端向MySQL发起Query请求; 命令解析器模块完成请求分类,区别出SELECT并转发给MySQL Query Optimizer(查询优化器); 查询优化器对整条Query进行优化,处理掉一些常量表达式的预算,直接换算成常量值; 查询优化器对Query中的查询条件进行简化和转换,如去掉一些无用或显而易见的条件、结构调整等; 分析Query中是否有Hint消息,是否可以通过Hint信息完全确定该Query的执行计划; 若没有Hint信息或不足以完全确定执行计划,则会读取所涉及对象的统计信息,根据Query进行写相应的计算分析,得出最后的执行计划。 查看执行计划:Explain Explain的作用 使用EXPLAIN关键字可以通过模拟优化器执行SQL查询语句了解MySQL是如何处理SQL语句,从而分析查询语句或是表结构中的性能瓶颈。 使用Explain可以了解到: 表的读取顺序:通过执行计划中的id判断 数据读取操作的操作类型:通过执行计划中的select_type判断 哪些索引可以使用

前端性能优化一

半世苍凉 提交于 2020-01-30 03:02:54
减少浏览器的回流和重绘 1. CSS 方面 避免过多样式嵌套 避免使用 CSS 表达式 使用绝对定位,可以让动画元素脱离文档流 避免使用 table 布局 尽量不要使用 float 布局 图片最好设置好 width 和 height 尽量简化浏览器不必要的任务,减少页面重新布局 使用 Viewport 设置屏幕缩放级别 避免频繁设置样式,最好把新 style 属性设置完成后,进行一次性更改 避免使用引起回流/重绘的属性,最好把相应变量缓存起来 2. JS方面 最小化回流和重排 为了减少回流发生次数,避免频繁或操作 DOM ,可以合并多次对 DOM 修改,然后一次性批量处理。 控制绘制过程和绘制区域 绘制过程开销比较大的属性设置应该尽量避免减少使用 减少绘制区域范围 DOM优化: 控制DOM大小并简化DOM操作 1. 控制DOM大小 总所周知,页面交互卡顿和流畅度很大一部分原因就是页面 有大量DOM元素。 想象一下,从一个上万节点的DOM树上,使用 querySelectorAll 或 getElementByTagName 方法查找某一个节点,是非常耗时的。另外元素绑定事件,事件冒泡和事件捕获的执行也会相对耗时。 通常控制 DOM 大小的技巧包括: 合理的业务逻辑 延迟加载即将呈现的内容 2. 简化DOM操作 对 DOM 节点的操作统一处理后,再统一插入到 DOM Tree 中