Linux性能工具调研
2016-03-25 08:41
253 查看
一.性能测试的关注点
l QPS(QueryPerSecond)每秒处理请求的个数
该值过小说明,应用处理能力不够,或者并发不够,没有充分利用cpu
l TPR(Timeper request)每个请求的平均响应时间
该值过小说明,应用处理能力不够
l median中位数,即50%请求的响应时间
l TR(Transferrate)网络传输率
该值过大,说明响应内容太多,网络传输可能成为瓶颈,一般虚拟机12M/s,实体机45M/s
二.系统负载的定义
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
l 它没有在等待I/O操作的结果
l 它没有主动进入等待状态(也就是没有调用'wait')
l 没有被停止(例如:等待终止)
一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
三. Linux常用的性能分析及工具
3.1 top-linux进程监控
Linux的top命令是一个性能监视程序,许多Linux系统管理员经常使用它来监测系统性能,top命令会把所有正在运行的实时进程用列表的形式显示出来并且会定时更新。它会显示CPU使用量、内存使用量、交换内存、缓存大小、缓冲区大小、流程PID、用户、命令等。它也显示正在运行的高内存进程和CPU利用率。
3.2 vmstat-虚拟内存统计
vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。系统性能分析工具中,使用最多的是这个,除了sysstat工具包外,这个工具能查看的系统资源最多。
l Procs
– r: 运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
– b: 处于不可中断状态的进程数,常见的情况是由IO引起的
l Memory
– swpd: 切换到交换内存上的内存(默认以KB为单位)
• 如果swpd 的值不为0,或者还比较大,比如超过100M了,但是si, so 的值长期为0,这种情况我们可以不用担心,不会影响系统性能。
– free: 空闲的物理内存
– buff: 作为buffer cache的内存,对块设备的读写进行缓冲
– cache: 作为page cache的内存, 文件系统的cache
• 如果cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IObi会非常
l Swap
– si: 交换内存使用,由磁盘调入内存
– so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
有些人看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
l Io
• bi: 从块设备读入的数据总量(读磁盘)(KB/s),
• bo: 写入到块设备的数据总理(写磁盘)(KB/s)
随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大
l System
– in: 每秒产生的中断次数
– cs: 每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
l Cpu
– us: 用户进程消耗的CPU时间百分比
• us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如PHP/Perl)
– sy: 内核进程消耗的CPU时间百分比
• sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
– wa: IO等待消耗的CPU时间百分比
• wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
– id: CPU处在空闲状态时间百分比
3.3 lsof——列出打开的文件
lsof命令和许多Linux/Unix系统命令一样,用于显示所有打开文件和进程。这些打开文件包括磁盘文件、网络套接字、管道、设备和进程。使用它最主要的原因是在卸载文件系统时,如果该文件系统中有任何打开的文件,操作通常将会失败,那么通过lsof可以找出哪些进程在使用,
3.4 tcpdump——网络数据包分析器
tcpdump是使用最广泛的命令行——网络数据包分析器或数据包嗅探器程序,用来捕获或过滤从网络特定接口接收到或者转移的TCP/IP数据包。它还把捕获到的包保存到一个文件夹中。tcpdump可以在所有主要的Linux发行版上使用。
3.5 free-命令
free命令显示系统内存的使用状况(物理内存和交换内存),通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存。
a. free命令输出的第二行(Mem)
这行分别显示了物理内存的总量(total)、已使用的(used)、空闲的(free)、共享的(shared)、buffer、cache的内存。
b. free命令输出的第三行(-/+buffers/cache) 这行最容易让人迷惑。
它显示的第一个值(used这一列)是这样得来的:
Mem行used列- Mem行buffers列- Mem行cached列
它显示的第二个值(free这一列)是这样得来的:
Mem行free列+ Mem行buffers列+ Mem行cached列
c. free命令输出的第四行(Swap) 这行显示交换内存的总量、已使用量、空闲量
通常 buffer 和cache 可以使用的内存空间越大,系统 IO 和 文件系统访问的性能越好。
3.6 uptime命令
最简便的查看系统负载的工具,系统负载越小,系统运行状况越好,对于系统负载处在什么范围内比较合适,是没有定论的。
一般以15分钟负载的值来评估系统的健康度,以10为这个值的临界点,如果系统负载持续高于10,通常是存在某个资源长期紧张的原因,我们需要重视,并且得开始着手解决这个问题了。如果偶尔高于10,应该开始留意它出现的频度,这往往是前面一种状况的先兆。
例如:04:03:58up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
当前时间04:03:58
系统已运行的时间10 days, 13:19
当前在线用户1 user
平均负载:0.54,0.40, 0.20,最近1分钟、5分钟、15分钟系统的负载
3.7 最直接查看系统平均负载命令- cat/proc/loadavg
root@Slyar.com:~#cat /proc/loadavg
0.100.06 0.01 1/72 29632
除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID。
3.8 netstat——网络统计
netstat是一个命令行工具,用于监视传入和传出的网络数据包信息和接口信息统计。系统管理员使用它进行监控网络性能和对网络相关问题进行故障排除是非常有用的。
3.9 HTOP——Linux进程监测
Htop是一个更先进的交互性和实时性的Linux进程监控工具。这个命令与top命令非常相似,但它的功能更加丰富,如友好的用户界面进程管理、快捷键、垂直和水平视图进程等。Htop是一个第三方插件工具,你需要使用YUM软件包管理工具在Linux系统上安装才可以使用。
3.10 lotop——监控Linux磁盘I/O
Lotop与top命令和Htop程序很相似,但它具有统计功能,实时监测和显示磁盘I/O。这个工具对精确进程和发现高使用量的读/写进程非常有用的。但同htop一样,是第三方软件。
3.11 iostat——输入/输出统计,常用的维护工具sysstat.
Linux系统维护常用工具sysstat
这个工具包提供了著名的sar 命令,还有非常实用的iostat, mpstat, sa1, sa2 等命令。
这几个命令可实现前面提及工具大多数的功能,除此之外,还能查看系统的网络带宽状况、每块磁盘使用状况、每个磁盘分区的使用状况等。iostat是一个非常简单的工具,用于收集和显示系统输入和输出存储设备统计信息。这个工具通常用于跟踪存储设备的性能问题,包括设备、本地磁盘、远程磁盘比如NFS。
3.12 Linux下很全面的监控工具dstat
dstat是一个用来替换vmstat,iostat netstat,nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具.与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat3, 即每三秒收集一次,但最新的数据都会每秒刷新显示.和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat
-c 即显示CPU的使用情况.
因此,第三方软件。
四.Linux常用的性能调优工具索引
l QPS(QueryPerSecond)每秒处理请求的个数
该值过小说明,应用处理能力不够,或者并发不够,没有充分利用cpu
l TPR(Timeper request)每个请求的平均响应时间
该值过小说明,应用处理能力不够
l median中位数,即50%请求的响应时间
l TR(Transferrate)网络传输率
该值过大,说明响应内容太多,网络传输可能成为瓶颈,一般虚拟机12M/s,实体机45M/s
二.系统负载的定义
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
l 它没有在等待I/O操作的结果
l 它没有主动进入等待状态(也就是没有调用'wait')
l 没有被停止(例如:等待终止)
一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
三. Linux常用的性能分析及工具
3.1 top-linux进程监控
Linux的top命令是一个性能监视程序,许多Linux系统管理员经常使用它来监测系统性能,top命令会把所有正在运行的实时进程用列表的形式显示出来并且会定时更新。它会显示CPU使用量、内存使用量、交换内存、缓存大小、缓冲区大小、流程PID、用户、命令等。它也显示正在运行的高内存进程和CPU利用率。
3.2 vmstat-虚拟内存统计
vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。系统性能分析工具中,使用最多的是这个,除了sysstat工具包外,这个工具能查看的系统资源最多。
l Procs
– r: 运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
– b: 处于不可中断状态的进程数,常见的情况是由IO引起的
l Memory
– swpd: 切换到交换内存上的内存(默认以KB为单位)
• 如果swpd 的值不为0,或者还比较大,比如超过100M了,但是si, so 的值长期为0,这种情况我们可以不用担心,不会影响系统性能。
– free: 空闲的物理内存
– buff: 作为buffer cache的内存,对块设备的读写进行缓冲
– cache: 作为page cache的内存, 文件系统的cache
• 如果cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IObi会非常
l Swap
– si: 交换内存使用,由磁盘调入内存
– so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
有些人看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
l Io
• bi: 从块设备读入的数据总量(读磁盘)(KB/s),
• bo: 写入到块设备的数据总理(写磁盘)(KB/s)
随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大
l System
– in: 每秒产生的中断次数
– cs: 每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
l Cpu
– us: 用户进程消耗的CPU时间百分比
• us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如PHP/Perl)
– sy: 内核进程消耗的CPU时间百分比
• sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
– wa: IO等待消耗的CPU时间百分比
• wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
– id: CPU处在空闲状态时间百分比
3.3 lsof——列出打开的文件
lsof命令和许多Linux/Unix系统命令一样,用于显示所有打开文件和进程。这些打开文件包括磁盘文件、网络套接字、管道、设备和进程。使用它最主要的原因是在卸载文件系统时,如果该文件系统中有任何打开的文件,操作通常将会失败,那么通过lsof可以找出哪些进程在使用,
3.4 tcpdump——网络数据包分析器
tcpdump是使用最广泛的命令行——网络数据包分析器或数据包嗅探器程序,用来捕获或过滤从网络特定接口接收到或者转移的TCP/IP数据包。它还把捕获到的包保存到一个文件夹中。tcpdump可以在所有主要的Linux发行版上使用。
3.5 free-命令
free命令显示系统内存的使用状况(物理内存和交换内存),通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存。
a. free命令输出的第二行(Mem)
这行分别显示了物理内存的总量(total)、已使用的(used)、空闲的(free)、共享的(shared)、buffer、cache的内存。
b. free命令输出的第三行(-/+buffers/cache) 这行最容易让人迷惑。
它显示的第一个值(used这一列)是这样得来的:
Mem行used列- Mem行buffers列- Mem行cached列
它显示的第二个值(free这一列)是这样得来的:
Mem行free列+ Mem行buffers列+ Mem行cached列
c. free命令输出的第四行(Swap) 这行显示交换内存的总量、已使用量、空闲量
通常 buffer 和cache 可以使用的内存空间越大,系统 IO 和 文件系统访问的性能越好。
3.6 uptime命令
最简便的查看系统负载的工具,系统负载越小,系统运行状况越好,对于系统负载处在什么范围内比较合适,是没有定论的。
一般以15分钟负载的值来评估系统的健康度,以10为这个值的临界点,如果系统负载持续高于10,通常是存在某个资源长期紧张的原因,我们需要重视,并且得开始着手解决这个问题了。如果偶尔高于10,应该开始留意它出现的频度,这往往是前面一种状况的先兆。
例如:04:03:58up 10 days, 13:19, 1 user, load average: 0.54, 0.40, 0.20
当前时间04:03:58
系统已运行的时间10 days, 13:19
当前在线用户1 user
平均负载:0.54,0.40, 0.20,最近1分钟、5分钟、15分钟系统的负载
3.7 最直接查看系统平均负载命令- cat/proc/loadavg
root@Slyar.com:~#cat /proc/loadavg
0.100.06 0.01 1/72 29632
除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID。
3.8 netstat——网络统计
netstat是一个命令行工具,用于监视传入和传出的网络数据包信息和接口信息统计。系统管理员使用它进行监控网络性能和对网络相关问题进行故障排除是非常有用的。
3.9 HTOP——Linux进程监测
Htop是一个更先进的交互性和实时性的Linux进程监控工具。这个命令与top命令非常相似,但它的功能更加丰富,如友好的用户界面进程管理、快捷键、垂直和水平视图进程等。Htop是一个第三方插件工具,你需要使用YUM软件包管理工具在Linux系统上安装才可以使用。
3.10 lotop——监控Linux磁盘I/O
Lotop与top命令和Htop程序很相似,但它具有统计功能,实时监测和显示磁盘I/O。这个工具对精确进程和发现高使用量的读/写进程非常有用的。但同htop一样,是第三方软件。
3.11 iostat——输入/输出统计,常用的维护工具sysstat.
Linux系统维护常用工具sysstat
这个工具包提供了著名的sar 命令,还有非常实用的iostat, mpstat, sa1, sa2 等命令。
这几个命令可实现前面提及工具大多数的功能,除此之外,还能查看系统的网络带宽状况、每块磁盘使用状况、每个磁盘分区的使用状况等。iostat是一个非常简单的工具,用于收集和显示系统输入和输出存储设备统计信息。这个工具通常用于跟踪存储设备的性能问题,包括设备、本地磁盘、远程磁盘比如NFS。
3.12 Linux下很全面的监控工具dstat
dstat是一个用来替换vmstat,iostat netstat,nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具.与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat3, 即每三秒收集一次,但最新的数据都会每秒刷新显示.和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat
-c 即显示CPU的使用情况.
因此,第三方软件。
四.Linux常用的性能调优工具索引
相关文章推荐
- (笔记)Linux内核学习(十一)之I/O层和I/O调度机制
- (笔记)Linux内核学习(十)之虚拟文件系统概念
- (笔记)Linux内核学习(九)之内核内存管理方式
- (笔记)Linux内核学习(八)之定时器和时间管理
- (笔记)Linux内核学习(七)之内核同步机制和实现方式
- (笔记)Linux内核学习(六)之并发和同步概念
- 避免误删文件:Linux回收站机制
- android常用Linux命令
- Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
- Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
- CentOS7安装Puppet+GitLab+Bind
- linux用户管理(1)----创建用户(adduser和useradd)和删除用户(userdel)
- linux cscope 使用方法
- pthread的和std::thread的线程分离
- CentOS7,安装gz格式的JDK1.8u73
- 避免误删文件:Linux回收站机制
- Linux进程管理之“四大名捕”
- linux配置java环境变量(详细)
- linux下安装JDK及配置
- 我的CentOS 7 U盘安装之路 (Win 8.1 Profession + CentOS 7双系统)