服务器性能调优工具

linux性能调优

Linux系统性能调优主要涉及到CPU、内存、磁盘、网络四个方面

CPU性能调优

内存分析常用的工具主要包括:free、smem

1、vmstat命令

vmstat(virtual memory statistics 虚拟内存统计)的缩写。

使用语法: vmstat [-V] [-n] [delay [count]]

示例(以3秒为时间间隔,连续收集10次性能数据):

  1. vmstat 3 5

procs:显示队列和等待状态 r:运行和等待cpu时间片的进程数,该值长期大于cpu个数表示CPU不足 b:等待资源的进程数,如正在等待I/O、内存交换等 memory:显示物理内存状态 spwd:切换到内存交换区的内存数量(以KB为单位)。spwd不为0,si/so为0即可。 free:当前空闲的物理内存数量(以KB为单位) buff:buffers cache的内存数量,一般对块设备的读写才需要缓冲 cache:page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached。若cache值越大,说明cached的文件数越多,I/O中bi比较小,说明文件系统效率比较好。 swap: 显示交换分区的使用状态 si:由磁盘调入内存,是内存进入内存交换区的数量 so:由内存调入磁盘,是内存交换区进入内存的数量 io:显示磁盘读写状况 bi:(读磁盘)从块设备读入数据的总量(KB/s) bo:(写磁盘)写入到块设备的数据总量(KB/s) system: 采集间隔内发生的中断数 in:某一时间间隔中观测到每秒设备中断数 cs:每秒产生的上下文切换次数 cpu: us:用户进程消耗的cpu时间百分比,us的值越高,说明用户进程消耗的cpu时间多,长期大于50%,需要优化程序或算法 sy:内核进程消耗的cpu时间百分比 id:CPU处于空闲状态的时间百分比 wa:I/O等待所占用cpu时间百分比 重点注意:procs的r对应的值和CPU项us、sy和id值

2、uptime

使用语法: uptime 示例:

  1. uptime

依次表示:系统现在的时间,运行时间,系统多少用户登录,1min/5min/15min内的平均负载。 load average:三个值不能大于cpu的个数,长期大于CPU个数,说明cpu负载很高,会影响系统性能。

3、mpstat

使用语法: mpstat 示例:

  1. mpstat

CPU:处理器ID %usr:用户进程消耗cpu时间百分比 %nice : 运行正常进程所消耗cpu时间百分比 %sys :系统进程消耗cpu时间百分比 %iowait : I/O等待所占用cpu时间百分比 %irq :中断时间所用的cpu时间百分比 %soft : 软中断时间占用的cpu时间百分比 %steal :内存相对紧张的环境下page in 强制对不同的页面进行的steal操作 %guest :运行虚拟处理器时CPU花费时间点的百分比 %gnice :运行带有nice优先级的虚拟CPU所花费的时间百分比 %idle:显示CPU处于空闲状态的时间百分比 %idle较低时,可能CPU不足; %iowait 较高时,可能当前负载下I/O子系统出现的某些问题。

内存性能调优

内存分析常用的工具主要包括:free、smem

1、free

使用语法: free 示例:

  1. free -g

free 命令输出中显示了系统的各种内存状态,具体包括物理内存和swap。 物理内存分为已使用内存(used)、空闲内存(free)、共享内存(shared)、系统缓存(buff/cache)、目前可用内存(available) total=used+free+buff/cache

2、smem命令

smem是一款命令行下的内存使用情况报告工具,能够给用户提供linux系统下内存使用的多种报告。 使用语法: smem smem -k -s uss -k参数用来显示内存单位 -s表示排序 uss表示对USS进行排序

RSS(Resident Set Size):用top命令可用查询到,是最常用的内存指标,表示进程占用的物理内存大小。但将各个进程的RSS值相加,通常会超出整个系统的内存消耗,因为RSS中包含了各个进程间的共享内存。 PSS(Proportional Set Size):所有使用某共享库的程序均分该共享库占用的内存,显然所有进程的PSS之和就是系统的内存使用量。它会更准确一些,它将共享内存大小进行平均后,再分摊到各进程上去。 USS(Unique Set Size):进程独自占用的内存,它只计算了进程占用的内存大小,不包含任何共享部分。 示例:

  1. smem -k -s uss

分比形式显示每个进程占用系统内存的比率

  1. smem -p -s uss

查看某个进程占用内存的大小

  1. smem -k -P kube-controller-manager

磁盘性能调优

磁盘性能调优常用的工具有:iotop、iotop等

1、iotop

示例:

  1. free -g

iotop类型与top的命令。 iotop跟一些选项,用来定制输出结果,常用选项: -p:指定进程 -u:指定用户名 -P:只显示进程,默认显示所有的进程 -k:以千字节显示 -t:表示在每一行前添加一个当前时间。

2、iostat

使用语法: iostat -d 示例:

  1. iostat -d 3 5

kB_read/s :每秒读取的数据块数 kB_wrtn/s :每秒写入的数据块数 kB_read:读取的所有块数 kB_wrtn:写入的所有块数 kB_read/s值很大,表示磁盘的读操作很频繁,可以考虑优化磁盘或优化程序; kB_wrtn/s 值很大,表示磁盘的写操作很频繁,可以将读取的数据放入内存中进行操作; 网络性能分析 网络性能分析常用的工具包括:ping、traceroute、mtr

1、ping:

使用语法: ping 示例:

  1. ping -c 10 www.baidu.com

time表示延时时间 packet loss表示丢包率

2、mtr

使用语法: mtr IP地址 示例:

  1. mtr 8.8.8.8

Loss% 丢包率信息 Snt 已发送数据包的数量 Last 最后一个包的延时 Avg 发生ping包的平均延时 Best 显示ping的最低延时 Wrst 显示ping的最差延时 StDev 显示标准差,一致度量数据分布的分散程度标准,标准差越小,网络的稳定性越好。

3、traceroute

使用语法: traceroute IP地址 示例:

  1. traceroute 8.8.8.8

综合性能分析工具

CentOS提供了一个更加强大的工具htop,在linux系统下执行htop即可展现htop的界面,类似于iotop和top的工具。

使用语法: htop 示例:

  1. htop

PID:进程标识号 USER:进程所有者的用户名 PRI:进程的优先级 NI:进程的优先级别数 VIRT:进程占用的虚拟内存值 RES:进程占用的物理内存值 SHR:进程占用的共享内存值 S:进程状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值时负数。 CPU%:该进程占用的CPU使用率 MEM%:该进程占用的物理内存和总内存的百分比 TIME+:该进程启动后占用的总CPU时间 Commad:进程启动的命令名称