Linux服务器性能监控
性能测试的目的
发现服务器的性能瓶颈。配置的不同能够承载的最大任务数不同,能够承载的压力也不同。
测试范围及性能指标
- CPU
- 内存 临时存储数据相对于磁盘I/O速度快,断电数据就丢失;
- 磁盘 永久存储数据,只要硬盘不坏
- 网络
- 版本 linux系统版本必须相同
性能损耗
通过多次压测来计算性能损耗:
例如:性能测试环境是 :3台 8核cpu 16G内存 性能表现是什么样子,5台,7台性能表现又是什么样子 ;
性能损耗指标计算(一般测试报告中需要体现出来):相同的脚本,相同的环境什么都是相同的,然后增加服务器然后大概计算一下性能损耗;
进程和线程
定义与区别
进程:进程是独立运行的程序,进程占系统资源,启动时就会分配内存空间;
线程:线程是在进程中工作,进程是一个盒子里面有多个线程至少有一个线程。CPU在调度和分派时是针对线程的。线程基本上不用系统资源。
区别:
- 一个线程只能属于一个进程,而一个进程可以拥有多个线程。
- 线程是进程工作的最小单位。
- 一个进程会分配一个地址空间,进程和线程之间不共享地址空间,即不共享内存。
- 同一个进程下不同的多个线程,共享父进程的地址空间。
- 线程在执行过程中,需要协助同步(多线程时控制好具体哪个线程在那个时间段来操作),不同进程的线程之间要利用消息通信的办法实现同步。
- 线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。
优缺点
进程优点:
- 每个进程相互独立了,不影响主程序的稳定性,子进程崩溃不影响其他进程;
- 通过增加CPU,就可以扩充性能。
- 可以尽量减少线程加锁和解锁的影响,极大提高性能。
进程缺点:
- 逻辑控制复杂,需要和主程序交互。
- 多进程调度开销大(占内存)。
线程优点:
- 程序逻辑和控制方式简单。
- 所有线程可以直接共享内存和变量等。
- 线程方式消耗的总资源比进程方式少。
线程缺点:
- 每个线程与主程序共用地址空间,最大内存地址受限。
- 线程之间的同步和加锁不易控制。
- 一个线程崩溃可能影响到整个程序的稳定性。
服务器实时监控
top参数(查看cpu,内存,进程)
-h :帮助
-p : 监控指定的进程。当监控多个进程时,进程ID已逗号分隔。这个选项只能在命令行下使用
例如:top -p 1,2 只查看pid等于1,2的进程
top任务命令区
直接输入M:按内存使用率排序
直接输入P:按CPU使用率排序
直接输入z :彩色/黑白显示
top中的load average
系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。三个值分别表示在最后1分钟、5分钟、15分钟的平均负载值。
在单核cpu中load average的值为1时表示满负荷状态。同理在多核cpu中满负荷的load average的值为1*cpu核实。例如 8核 load average为8时表示满负荷。
内存监控
vmstat(内存)
可以监控操作系统的进程状态、内存、虚拟内存、磁盘IO、CPU的信息。
语法:vmstat[-a][-n][-S unit][delay [count]]
vmstat参数
-S:使用指定单位显示。参数有k、K、m、M,分别表示1000/1024/1000000/1048576字节(byte)。默认单位为K(1024bytes)
例如:动态监控1秒显示2次
vmstat 1 2
free(内存命令)
能够监控系统的内存使用状态,其中,total:总计物理内存的大小;Used:已使用多大;Free:可用有多少;shared:多个进程共享的内存总额;buffers/cached:磁盘缓存的大小。
free -m 已Mbps显示
实时监控 cpu
【mpstat】
需下载安装好:CentOS系统使用 yum install -y sysstat
Ubuntu系统使用 opt-get install -y sysstat
mpstat最大的特点是:可以查看多核cpu中每个计算核心的统计数据。
mpstat需关注字段:%usr(用户使用) %sys(系统) %idle(空闲越多越好)
mpstat -p 帮助
mpstat -->查看所有cpu
mpstat -P 0 -->查看第一核的cpu
mpstat -P 3 查看第三核cpu
mpstat 1 2 1秒钟动态获取2条所有cpu
实时监控【网络】
【netstat】 命令用于显示本机网络链接、运行端口、路由表等信息。
参数说明:
-n:拒绝显示别名,能显示数字的全部转化成数字
-l :仅列出有在Listen(监听)的服务状态
-p:显示建立相关链接的程序名
-t :显示tcp相关选项
-u : 显示udp相关选项
-i : 显示自动匹配接口的信息
-c : 每隔一个固定时间,执行该netstat命令
常用参数组合:netstat -ntlp --->查看tcp、监听状态、不显示别名且显示建立链接的程序名;
查看端口是否被监听,是否在运行状态:
常用参数组合:netstat -i --->显示自动匹配接口的信息 查看网络传输的大小,有没有报错;
各个字段介绍:
动态打印
netstat -i 2 --->2秒打印一次
实时监控-磁盘
【iostat】
iostat是对系统磁盘IO操作进行监控,它的输出主要显示磁盘的读写操作的统计信息,同时给出cpu的使用情况;
参数说明:
-x 输出指定要统计的磁盘设备名称,默认为所有磁盘设备;
iostat
iostat -x
动态打印 iostat -x 2 --->2秒打印一次
万能命令(sar)
sar是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告。
sar命令性能监控范围,文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用情况、进程活动及IPC有关的活动等。
sar选项
-A :所有报告的总和
-u :CPU利用率
-v :进程、节点、文件和锁表状态
-r :显示系统内存的使用情况
-B :内存分页情况
-b :缓存区使用情况
进程追踪命令(性能测试不常用)
strace命令是一个集诊断、调试、统计与一体的工具,可以使用strace对应用系统的调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者了解应用工作过程的目的。
strace选项
-p:跟踪指定的进程。
-f :跟踪由fork子进程系统调用。
-c:统计每一系统调用的所执行的时间、次数和出错的次数等。
-t :在输出中的每一行前加上时间信息。-tt时间确定到微秒级。
-e:输出过滤器,通过表达式,可以过滤掉不想要的输出。
-o filename:默认strace将结果输出到stdout,通过-o可以将输出写入到filename文件中。