服务器内部处理速率的提高:
1. 计算密集型:优化思路是提高CPU利用率,采用多线程的思路进行 。但是线程数量不能超过cpu核心数 。因为线程数量超过cpu核心数后,cpu会分片执行超过部分的线程,会增加cpu读取线程缓存的压力,使计算能力下降
2. IO密集型:
– 优化思路是提高存储的效率,如使用固态硬盘,阵列,分布式等技术 。
– 由于IO密集型中,CPU可能会等待IO操作完成 。所以我们可以使用超过CPU核心数的线程来访问IO,从而提高性能(但如果磁盘繁忙,线程数再多也只是在磁盘队列中排队,增加CPU线程数来访问IO的方法,适用于IO读/写操作并不繁忙,但是需要长时间寻址的场景)
– 注意:因为磁盘内部只有1个线程处理IO操作,所以要真正实现磁盘的并发,需要使用多个磁盘,也就是磁盘阵列
数据库处理速率:
? 数据库直接和IO进行交互,所以提高IO性能,能提高数据库性能 。
? 数据库有自己的数据结构,所以优化数据存储和查询的相关算法,也能提高数据库性能
? 索引优化
? 缓存优化
? 数据库连接优化
? 数据库查询语句优化
? 分表分库
? 分布式处理
性能优化方向也可以用一个思维导图来表示:
硬件优化:加cpu升级,cpu阵列;使用ssd固态硬盘;主板用最先进的,内存用最高的,网络用专线等等 。
操作系统优化:
? windows操作系统,去掉不需要的服务,根据实际业务场景调整线程,虚拟内存,缓存的大小等相关配置项,需要专业人士操作
? Linux操作系统:与windows基本相同
中间件优化:根据不同的业务场景,选择不同的中间件,调整配置等等,如nginx中启用的cpu核心数量等等
架构优化:采用分布式存储架构,分布式服务器架构,负载均衡等
代码优化:许多问题都是代码的问题,如果代码问题能准确定位,可以考虑优化代码 。
数据库优化:优化索引,配置,数据库连接,算法等等
算法优化:这个不提了,算法属于底层的优化,需要非常扎实的计算机基础知识和优秀的逻辑思维以及灵感
其他:线程,进程,网络等等
性能监控
我们要分析数据,就必须得到数据,所以需要性能监控工具来采集和展示数据,才能进行分析 。
那么我们要怎么进行监控呢?这里我们可以借助已经实现的工具来进行 。
Linux:
? 可以使用sysstat工具包中的sar命令来监控CPU,内存,IO,网络的运行情况,具体用法参考:
http://lovesoo.org/linux-sar-command-detailed.html
? 可以使用ps命令查看线程运行情况
JAVA:可以使用jstack,jprofile,jstat,jmap,jps工具来进行查看,这是java自带的工具包,用于分析java的堆栈信息
Windows:
? 可以使用widnows自带的资源监视器监控和采集数据
数据库监控:
? mysql数据库有自带的监控工具,但是收费
? 可以使用免费的工具进行监控,如innotop
? 可以使用综合能力强大的工具监控,如zabbix(也能监控服务端)
其他:
? 前端性能监控:Yslow,谷歌开发者模式->performance,使用windows.performance 进行定制化开发
? Android监控:
– 网易开源的Emmagee,
– 腾讯开源的GT,
– 科大讯飞的iTest,
– Google的开源Battery
– 自己开发
? IOS监控:
– 自己开发,参考:
http://www.cocoachina.com/articles/19680
? 服务器中间件:nginx,apache,dubbo,redis,kafka等
看到需要学习这么多技术,可能会让大家感到许多压力 。但是大家不用慌,这里介绍一个开源的性能测试工具,功能强大也好用,不满意还可以二次开发,它就是jmeter
推荐阅读
- 2月安卓手机跑分性能榜 安卓手机排行榜2023
- 荣耀盒子安装直播软件教程 荣耀盒子怎么看电视直播
- 3款性能强续航给力 2023年性价比最高的手机排行
- 关于考试的名言警句
- 简述计算机软件著作权的侵权行为
- 关于查看电脑配置的几种方法详述 win11怎么看电脑配置全部数据
- 关于5种方法打开任务管理器详述 任务管理器的快捷键是什么
- iOS16隐藏主页应用方法教程 怎样把软件隐藏起来苹果手机
- 关于华为Mate 20系列报价详情 华为mate20上市时间与价格
- 四款实力满满的抢票软件 抢购软件哪个成功率高
