监控是linux系统使用人员必备工具。选择好的工具能有事半功倍的效果。下面介绍一款容易安装,使用方便、功能强大的监控工具sar。
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、 系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
操作系统:CentOS6.8
SSH工具:XShell
Java:1.7
参考资料:https://www.cnblogs.com/chris-cp/p/3674768.html
sar命令常用格式
sar [options] [-A] [-o file] t [n]
样例:
sar -n DEV 5 10
操作命令结果截图
IFACE:LAN接口 rxpck/s:每秒钟接收的数据包 txpck/s:每秒钟发送的数据包 rxbyt/s:每秒钟接收的字节数 txbyt/s:每秒钟发送的字节数 rxcmp/s:每秒钟接收的压缩数据包 txcmp/s:每秒钟发送的压缩数据包 rxmcst/s:每秒钟接收的多播数据包
1. CPU资源监控
sar -u -o test 10 3
2. inode、文件和其他内核表监控
sar -v 10 3
3. 内存和交换空间监控
sar -r 10 3
4. 内存分页监控
sar -B 10 3
5. I/O和传送速率监控
sar -b 10 3
6. 进程队列长度和平均负载状态监控
sar -q 10 3
7. 系统交换活动信息监控
sar - W 10 3
8. 设备使用情况监控
sar -d 10 3 –p
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
t为采样间隔,n为采样次数,默认值是1;
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
options 为命令行选项,sar命令常用选项如下:
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
转载本文需注明来源。
解决性能测试这个问题,我们可以分为三大步:
第一步:了解性能测试
第二步:熟悉性能测试流程
第三步:从性能测试原理分析性能测试流程和相关的技术知识
下面我们详细介绍
1.为什么要做性能测试?
1.1 这里提供了2个案例:
示例1:
游戏行业:某游戏上线新功能,目标是全服游戏群体,结果上线后,先后出现了服务器崩溃,游戏功能图标加载缓慢等问题,导致玩家怨声载道,为此,游戏运营商不得不发放了许多奖励。具体损失不表,为赶进度而发布的功能,也因为生产事故导致延期更长的时间
这就是典型的没有进行性能测试,或者说性能测试不充分导致出现的生产事故。在游戏行业还比较好,毕竟损失的只是虚拟的货币和玩家的游戏热情,但是在传统行业呢?
示例2:
传统航空行业:2019年9月5日,波音777X飞机在压力测试的过程中,舱门炸毁。
如果,波音的777X飞机没有经过压力测试就试飞了,那么当遇到同样的条件时,舱门必然炸毁,整个飞机就会直接暴露到高空低压低氧的环境,全飞机的人生存将会受到直接威胁。
通过这两个案例,我们知道,在一些极限的场景下,软/件和硬件会造成极大的破坏和损失,因此,我们需要进行性能测试,来验证软件在高压力下,高并发下,高负载下的实际工作情况。
2. 什么是性能测试?
性能测试就是模拟一些极端场景,对软/硬件性能进行测试,判断其极限性能和在极限性能边界上的运行状态。
性能测试主要分为前端性能,网络性能和后端性能
? 前端性能:是指对前端相关的数据指标进行测试,主要是HTTP请求,JavaScript,多媒体数据,CDN,缓存等进行测试,主要关注响应时间。一般优化方向是,缩小数据包,提高缓存命中率,即时响应。
? 网络性能:是指数据包在网络中传播时的性能,主要关注网络带宽,网络吞吐量,网络延时,丢包率等指标。
? 后端性能:前端发起请求后,经过的各类中间件和服务器处理的性能。比如:apache、nginx、rabbitmq、storm、zookeeper、dubbo、mysql数据库等。主要关注TPS(Transaction Per Second 每秒事务请求数),CPU,内存,交换内存,IOPS(IO吞吐量),TCP连接数等指标)
3.性能测试的目标
总之,性能测试的目的,就是为了提前发现软/硬件的瓶颈,从而可以进行评估和改进的一种测试。
本文重点介绍软件性能测试中的后端性能测试。
本章节主要是为了介绍常用的性能测试流程
性能测试流程可以简单的划分为4个阶段:
? 性能需求分析阶段
? 准备阶段
? 执行阶段
? 报告和总结阶段
性能需求分析阶段
? 熟悉项目相关的资源,如:架构设计,软/硬件环境配置,线上业务运营数据(交易量、用户活跃度、请求分布等等)
? 根据运营数据或者指标,确定性能测试要达到的目标,如:支持xx用户并发,TPS达到多少,响应时间达到多少,还有CPU,网络,IO的负载情况等等
? 设计性能测试计划:与功能测试计划差不多,主要对以下内容进行设计(根据实际情况设计,比如有的公司只看结果,就可以省略许多不必要的文案说明):
– 项目背景
– 项目结构
– 测试功能/范围
– 软/硬件资源准备和对比
– 技术术语
– 时间/人力安排
– 度量方式
– 准入准出条件
– 各阶段需要接收和交付的文档
– 压测工具和监控工具
– 风险项
– 其他
? 设计性能测试场景
主要有以下场景:
– 基准测试:了解系统在静置时的资源消耗,如cpu,io,网络带宽,网络连接的情况。如果有干扰,务必排除。
– 单次连续请求测试:1次连续请求情况下的tps,响应时间,服务器资源消耗情况,主要用于参考。
– 负载测试:逐渐增加并发请求数,查看tps,响应时间,错误率,服务器资源消耗情况,主要用于分析最大性能。
– 压力测试:在最大性能的临界点上保持压力进行测试,查看服务器在高压力情况的处理情况。
– 稳定性测试:连续xx天内,在一定的并发下进行测试,查看服务器运行情况是否能达到需求设计
准备阶段
? 搭建性能测试环境
? 设计性能测试用例
? 准备测试数据
? 编写测试脚本
执行阶段
? 运行性能监控工具
? 按照测试场景,执行测试用例。
? 分析:分析性能瓶颈,针对不同的业务场景,分析的侧重点也不一样,比如计算密集型,IO密集型的业务,还有线程锁,垃圾回收机制等等
? 调优
结果阶段
? 总结测试结果,输出性能测试报告
本章节,主要是通过性能测试的原理,了解性能测试需要使用的各方面的知识和技术。
性能测试原理介绍:
性能测试,本质就是模拟客户端请求,对服务器进行高并发,高流量的压力测试,从而验证服务器提供服务的能力,并找出瓶颈点,提出或者进行优化。
问题:
1. 怎么模拟高并发,高流量?
2. 怎么进行性能优化?
1. 怎么模拟高并发:
– 使用多线程技术,模拟高并发。
– 如果并发太高,如10w并发以上,则需要使用负载均衡和分布式处理技术,jmeter工具支持多台机器作为负载机。
2. 怎么模拟高流量:
– 在每个请求中塞入大量数据即可
3. 怎么进行性能优化
– 这是个大问题,下文《怎么进行性能优化》会有更详细的讲解
那么怎么提升性能呢?我们首先介绍一个衡量性能标准的一个参数:TPS(Transaction Per Second 每秒事务请求数)。
我们再看一下TPS计算公式:
TPS=总请求数/ 平均响应时间
总请求数:在一段时间内发送的所有请求数量
平均响应时间:所有请求的平均响应时间
通过这个公式,我们可以知道,当分母越小时,TPS越大。所以要提升性能,我们只需要提高平均响应时间就可以了。那么怎么减少平均响应时间呢?
我们先看一个客户端到服务器的请求流程图:
图中,客户端发送请求经过了互联网到服务器,服务器经过内部处理,从数据库中读取了数据,然后把数据返回给客户端。这过程中,经历的时间大致可以分为:C1+T1+T2+T3+N2+T4+T5。
所以,要把平均响应时间缩小,我们只需要缩小这8个时间就够了,其中主要包括:
? 网络时间(T1+T2+T3+T4+T5),
? 服务器内部处理时间(N1),
? 数据库处理时间(N2),
? 客户端处理时间(C1)。
所以我们可以就可以从这三个方向去优化:提高网络传输速率,服务器内部处理速率,数据库处理速率,客户端处理速率,其中客户端处理速度也和服务端优化策略基本相同
性能优化:
网络传输速率的提高:
1,采用光纤,配置路由表,缩短网络传输距离与路由器跃点数量。
2,如果是实时服务,那么需要配置缓存服务器,尽量避免缓存穿透
服务器内部处理速率的提高:
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
jmeter可以很好的支持并发操作,并有内置模块收集TPS,响应时间等关键性能指标。服务端性能也可以使用jmeter插件来实现监控,只要掌握jmeter工具的使用和性能测试流程,性能测试就不再遥远!
想要做好性能测试,的确需要比较扎实的基本功和丰富的应用经验,但是如果想快速入门进行性能测试,可以重点掌握性能测试流程和jmeter工具就可以初步达到要求了。
ighter:吴晋超
From:Beijing,China
(注:lighter为light painter 简称)
Lighter旨在中文地区报道与推广光绘艺术。我们把light painter 称之为Lighter ,所以在这个星球上有非常多的Lighters.
Lighter主要在移动互联网上进行传播,包括Lighter移动社区,微信公众号,微博,,中国主流视频网站,以及热门APP等。
吴晋超,隶属国内顶尖汽车广告公司bitone旗下的原创团队,是一名导演。本职工作是专注于制作创意短片,光影涂鸦是我个人的兴趣爱好。
最早开始制作是在大学快毕业那会儿,因为我是动画专业出身,所以开始就是以动画的形式来制作光影涂鸦。当初根本没有想到要商业化,纯粹是做着玩的,但没想到第一部片子做出来之后没过多久就有商业项目找了过来,慢慢的,就当成是一个职业在做。
来上作品:小U看世界
https://v.qq.com/x/page/g0368thvbaq.html (由于正文只能传一个视频只能放链接了~~)
这里是吴导的站酷:
http://edoness.zcool.com.cn/
都是详情干货哦
我刚接触光影涂鸦的时候经常看德国LICHTFAKTOR的作品。
当时也算是巧合,因为那时候因为学校的关系,我和原德国电影博物馆的馆长Dr.Rolf一块共事,我和他提过这个团队,于是他就帮我写了一封推荐信,然后我就跟他们联系上了,真的很惊讶也很开心。所以我能到今天这步,很大程度是归功于Dr.Rolf。
关于LICHTFAKTOR这里有大神的官网链接:
http://www.lichtfaktor.com/
https://v.qq.com/x/page/v0368gotrnj.html
我觉得自己是一个很矛盾又很倔强的人。矛盾是因为我在想一件事的时候会想到好的和坏的一面,好的会激励我,坏的会阻挠我,而倔强正好能让我抛开坏的一面,坚持走下去。如果不是因为这些,我的作品也不可能出现。
除了光绘之外,平时我和我的团队都在做一些创意短片,实拍和动画CG结合的。之前我们已经做出了很多反响还不错的作品。
未来的一年,我们打算结合各种手段和技术,去尝试制作一些列的短片,具体的题材还没有想好。因为现在我们刚加入Bitone,那里有很多新鲜以及很厉害的技术,所以我们需要一定时间去消化,然后将这些技术融入到我们的片子里边。当然,光影涂鸦我们也会继续下去。因为光影涂鸦受表现形式所束缚,所以很难在片子当中体现完整的故事性,这块我们会继续作出改变,以及在光的形态上我们会做更多的研究。
因为我对于动态的东西很感兴趣,相比于照片来说,当然照片能表现的细节更多,但我觉得动态的东西能够给人带来活力。所以一直以来我都是在做动画,当然,在每次制作之前我们都会以照片的形式来呈现一些关键画面,尽可能多的在画面里表现出需要的东西。
我觉得最有趣的就是和大家一起全身心投入到一件事情上,
吴导与团队在一起创作:
那个时候能感觉到大家的心是在一块的,虽然问题很多,但我们都会一一想办法解决。而且在拍片的过程中并不是枯燥无味的,会发生很多意想不到的事情,这就和光影涂鸦一样,我们不知道下一张会画出什么东西,所以满怀期待。
下面来欣赏下吴导为NEWBLANCE创作的光绘动画!
<script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
我觉得最难的就是如何构思出一个故事情节吧,因为我觉得光影涂鸦虽然是一种视觉艺术,但观众看多了,还是会感觉到疲惫,所以有一定的故事性会更吸引人,所以每次做片子,前期是需要花费很长时间的,有的时候比拍摄的时间还有长。而且还需要考虑每一个镜头的衔接是否顺畅,我觉得这也是我们和别的光影涂鸦团队不同的地方吧。
所谓题材和灵感其实来自客户啦,因为现在我们已经将光影涂鸦商业化,需要去为客户定制一些东西。
通常我们的周期在一个月左右,前期大概花掉一两周,拍摄一周,后期一周左右。在此之前我们的道具非常简单,仅仅是一些手电,荧光棒及Led灯。更多的是根据不同的内容去将这些道具做成自己想要的道具,所以每次都会花很多时间在这上边。
下面来欣赏下吴导第一支光绘动画! (由于正文只能传一个视频只能放链接了~~)
https://v.qq.com/x/page/q035002sar3.html
我有挺多的兴趣爱好,我最喜欢做的还是出门走走,我希望我的生活就是在旅途中度过,累了就回家休息一下。俗话说,读万卷书不如行万里路,当然不是说不读书啦,读书还是非常必要也是最便宜的一种学习方式。但我更希望出去走走,因为这样我能够切身体会到这个世界,而不是听别人说或是从哪看到。而且我觉得,很多时候灵感是来自生活的,只有当我们真正体会到生活,才能将其转换,变成我们作品中的一部分。所以我想睡遍全世界的旅馆,我想飞过所有的天空,我想这个世界少了我会很无聊。
其实没什么偶像,我仅仅是羡慕能够让生活变得有趣的人。
最后我想对各位Lighter说:坚持你想做的事,总会看到你想要的结果。
本次专访由 Lighter:俊仔 采访
如果你也想成为Lighter记者或者加入Lighter,那就马上联系俊仔吧 ,先填饱肚子,努力干活,馒头的味道才会好,馒头的味道好了,人活着就有意义了。
jacky@imlighter.com 微博:俊仔junzai(请注明在公众号上看到的)
谢谢大家来捧场,这里有本店推出的光绘练级装备,请问你现在几级?什么新手?那千万别买,你妈会打你的。
*请认真填写需求信息,我们会在24小时内与您取得联系。