linux服务器配置及服务器资源命令使用查看

在做性能压测之前,需要对被测服务器有所了解,常用的服务器资源有:CPU、内存、硬盘、网络、进程等

sysstat百度网盘:sysstat
提取码: 0000

一、查看系统服务器配置信息

常用命令:cat /proc/cpuinfo或者lscpu、pidstat等
在这里插入图片描述
需要关注的:
Architecture: x86_64 # 架构信息,表示系统的CPU架构为x86_64,即64位架构
CPU(s): 4 #逻辑cpu个数,表示系统中有4个CPU
Model name:Intel® Core™ i5-8500 CPU @ 3.00GHz # 型号名称,表示CPU的具体型号

二、查看CPU利用率

查看cpu利用率可以使用top、pidstat、htop、vmstat、nmon等

  1. top命令,主要查看平均负和和cpu使用率
    工作常见场景1:压测用户量不大(50、100),cpu就很高,需要评估服务器是不是很差(达到多少年限需要更换服务器) --项目本身(分析哪个进程导致)
    工作常见场景2:压测用户量很大,cpu还是不高,没怎么变化(分析压力是否到服务器,用户数有没有压到位等)
    在这里插入图片描述

  2. pidstat命令
    pidstat命令查看进程级别的CPU利用率
    pidstat -u:显示每个进程的CPU利用率
    在这里插入图片描述

  3. 案例:模拟cpu使用率100%的情况下能不能正常运行

    • 安装命令: yum install -y epel-release
    • 安装命令:yum install -y stress
    • 把sysstat文件夹通过xftp上传到服务器/opt目录下
    • 在sysstat目录下对执行文件进行赋权:chmod a+x ./configure
    • 在sysstat目录下执行:./configure
    • 在sysstat目录下编译:make
  • 分别打开4个窗口
    • 1个窗口(查看平均负载变化):watch -d uptime
      在这里插入图片描述
    • 2个窗口(在/opt/sysstat目录下执行),查看平均负载情况(间隔5s输出1组数据)或者mpstat -P ALL 5:
      ./pidstat -u 5 1
      在这里插入图片描述
    • 3个窗口(4代表4核、600代表5分钟)执行:stress --cpu 4 --timeout 600
      在这里插入图片描述
      再次查看刚才打开的窗口查看平均负载
      在这里插入图片描述
      再次执行(%wait等待):./pidstat -u 5 1
      在这里插入图片描述
      通过top命令或者按1后查看,cpu使用率为100%,cpu核数4个
      在这里插入图片描述
      cpu利用率:分析到哪个进程,有多少被等待的,导致占用cpu过高(java代码、死锁、数据库等问题),还需要进一步分析
  1. CPU高负载案例,模拟负载很高(模拟8个进程)
    • 指令(其他不变,把cpu核数更改为8个):stress --cpu 8 --timeout 600

再次查看刚才打开的窗口查看平均负载(7.64<8)
在这里插入图片描述

再次执行(%wait等待):./pidstat -u 5 1 在这里插入图片描述
通过top命令或者按1后查看
在这里插入图片描述
通过pidstat命令查看cpu严重不足,有很多在等待的进程($wait)

通过上面2个案例分析得出2个结果,如下:

  • 压测的时候,cpu使用率很高,但是平均负载很低?
    • 分析:
      • 当前进程使用了cpu资源,并没有很多进程在等待
      • 分析是哪一个进程很高,找到进程高的哪个,再进入进程级别分析(java应用、db、redis等)
  • 压测的时候,cpu使用率很底,但是平均负载很高?
    • 分析:
      • 当前进程使用了cpu资源,有很多进程在等待
      • 等待磁盘io操作的进程过多,导致进程队列长多大,使用cpu的进程少
        • 常见案例1:磁盘的读写操作过多,出现io等待
        • 常见案例2:mysql没有索引或者死锁问题,都需要等待
        • 常见案例3:(NFS共享储存有故障)共享储存读取不到数据,长时间读取无法释放资源,都需要等待
      • 负载分类:cpu负载(计算密集型 计算 逻辑 算法处理)、IO负载(IO密集型)

二、平均负载

常用命令: uptime、top等
平均负载定义:一段时间内正在使用和等待使用CPU的平均进程数
Load Average (平均负载) 就是一段时间(1分钟、5分钟、15分钟)内平均 Load
在这里插入图片描述

  1. 看趋势的话是从右往左看 , 从 15分钟 ▶ 5分钟 ▶ 1分钟 ,看这个数字是递增还是递减(负载慢慢减小)
  • 举例:
    • 系统负荷为0,正在使用和等待使用CPU的平均进程数都是0
    • 系统负荷为0.5,意味着正在使用的cpu一半,没有等待
    • 系统负荷为1.0,意味着cpu刚好用完(满负荷跑,没有任何等待,所以性能指标cpu要求0.8或80%)
    • 系统负荷为1.7,意味着正在使用和等待的进程(刷新页面时间长等,RT变大)

三、查看内存大小及使用率

常用命令: free、cat /proc/meminfo、top、htop、 vmstat等

  1. free命令
    在这里插入图片描述
    所有空闲内存 = free+buffers+cached = total-used
选项释义
total总计物理内存的大小
usedl已使用多大内存(used= total – free – buff/cache)
free未使用的内存(free= total – used – buff/cache)
shared多个进程共享的内存总额
buff/cache磁盘缓存的大小
available可用于启动新应用程序,无需交换的内存大小
  • 单位:
    • free -m:以 MB 为单位的输出.
    • free -G:以 GB 为单位输出
    • free -l:详细的低内存和高内存统计信息
    • free -t:RAM + swap
    • free -s:多少秒更新一次
    • free -C:更新多少次
  1. vmstat命令
    在这里插入图片描述
  • Procs (进程):

    • r_ : 可运行队列的线程数,这些线程都是可运行状态,只不过 CPU 暂时不可用
    • b_ : 被 blocked 的进程数,正在等待 IO 请求
  • Memory (内存):

    • swpd: 已使用的 SWAP 空间大小,KB 为单位
    • free: 可用的物理内存大小,KB 为单位
    • buff: 物理内存用来缓存读写操作的 buffer 大小,KB 为单位
    • cache: 物理内存用来缓存进程地址空间的 cache大小,KB 为单位
  • Swap (交换区):

    • si: 数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位
    • so: 数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位
  • io: (现在的Linux版本块的大小为1024bytes):

    • bi: 每秒读取的块数
    • bo: 每秒写入的块数
  • system:

    • in: (interrupt)则是每秒中断的次数
    • cs: (context switch)是每秒上下文切换的次数
  • CPU (以百分比表示):

    • us: 用户进程执行时间(user time)
    • sy: 系统进程执行时间(system time)
    • id: 空闲时间(包括IO等待时间)
    • wa: 等待IO时间
  • Swap (交换区):

    • si: 数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位
    • so: 数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位

Tips-1:内存的概念:物理内存核虚拟内存
物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)

Tips-2:
交换区的出现:当内存不够时会去向磁盘借磁盘,如果si、so数值比较大,就需要向磁盘借,一般都不会是使用,会关掉,效率很慢,在微服务中或者项目中,可以使用扩容的方法来实现

Tips:内存的寻址时间比磁盘io寻址快 100倍 至 10万倍。(例如 SAP 的 HANA 内存: 2T),内存访问速度是纳秒级(10的-9次方),硬盘的访问速度是微秒级(10的-3次方),例如:内存相当于高铁,磁盘相当于普通火车

四、磁盘

常用命令:iotop 、dd 、df、 iostat 、 sar 、 dstat 、 fio、vmstat等

读写速度: 机械硬盘:>100M/s , 固态硬盘: >500M/s

  1. 显示磁盘相关统计信息:vmstat -d
    在这里插入图片描述
  • reads【 or writes】
    • total:成功完成的总读取数
    • merged:分组读取【或写入】(产生一个 I/O)
    • sectors:扇区读取【或写入】成功
    • ms:阅读【或写入】花费的毫秒数
  • IO
    • cur:正在进行的 I/O
    • sec:I/O 花费的秒数
  1. df -h:是最常见的磁盘查看命令。它可以显示文件系统的总大小、已用空间、可用空间和挂载点等信息
    在这里插入图片描述
    Size:文件系统总大小,
    Used:已使用大小,
    Avail:可用空间linux启动盘制作工具,
    Use%:表示已使用百分比

五、网络

常用命令:ifconfig、netstat -s、sar、iperf等

  1. ifconfig命令
    在这里插入图片描述

errors 表示发生错误的数据包数,比如校验错误、帧同步错误等
dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer(这个缓冲区是在内核内存中,更具体一点是在网卡驱动程序里),但因为系统内存不足等原因而发生的丢包
overruns 表示超限数据包数,即网络接收/发送速度过快,导致 Ring Buffer 中的数据包来不及处理,而导致的丢包
因为过多的数据包挤压在 Ring Buffer,这样 Ring Buffer 很容易就溢出了
carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等
collisions 表示冲突、碰撞数据包数

  1. sar命令
    sar -n DEV,显示网口的统计数据;
    sar -n EDEV,显示关于网络错误的统计数据;
    sar -n TCP,显示 TCP 的统计数据
    在这里插入图片描述
    rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒
    rxkB/s 和 txkB/s 分别是接收和发送的吞吐率,单位是 KB/ 秒
    rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒

  2. iperf命令
    Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能, 可以报告带宽、延迟抖动和数据包丢
    失。
    安装方式:1. 如果使用yum install iperf -y命令出现很多[Errno 14] HTTP Error 404 - Not Found,除了更新安装数据源之外,还可以通过wget下载的方式,如下

wget https://downloads.es.net/pub/iperf/iperf-3.0.5.tar.gz
tar -zxvf iperf-3.0.5.tar.gz
cd iperf-3.0.5
./configure
make
make install

其他版本:ifperf各版本链接

  • 共用的参数:
    • -f [k|m|g|K|M|G] 指定带宽输出单位
    • -p 指定服务器端使用端口或客户端连接端口
    • -i 指定每次报告之前的时间间隔,单位为秒,默认为1
    • -F 指定文件作为数据流进行带宽测试
  • 服务端专有参数:
    • -s 以服务器模式启动
    • -D 将iperf作为后台守护进程运行
  • 客户端专有参数:
    • -c 以客户端模式运行
    • -u 指定使用udp协议
    • -b 指定udp模式使用的带宽
    • -t 指定传输数据包的总时间
    • -n [K|M|G] 指定传输数据包的字节数
    • -I 指定读写缓冲区的长度。tcp模式默认为8KB,udp模式默认为1470B
    • -P 指定客户端与服务端之前使用的线程数,默认是1。需要两端同时使用
    • -R 切换发送、接收模式。默认客户端发送,服务端接收,设置此参数后,客户端变为接收,服务端为发送。
    • -w 指定套接字缓冲区大小,在tcp模式下,此值是设置tcp窗口大小的。用来限制可以接受数据包的最大值
    • -B 用来绑定一个主机地址或接口,这个参数仅用于具有放多个网卡的主机。在udp模式下,此参数用于绑
      定和加入一个多播组
    • -M 设置tcp最大信息段
    • -N 设置tcp无延迟
测试tcp吞吐量:iperf3 -c ip地址
  1. 先启动服务器端窗口不要关闭(一直挂着)
    在这里插入图片描述
  2. 复制一个窗口,执行命令:iperf3 -c ip地址
    在这里插入图片描述
    可以看到iperf3持续传输10s,传输的数据量是52.2GBytes,网卡带宽是44.8Gbits/sec
测试udp丢包和延迟:iperf3 -c ip地址 -u -b 100M -f M -i 2
  • udp由于不提供可靠的数据传输服务,所以一般都只关注udp的丢包和延迟, 下面是在iperf客户端传输100MB的
    udp数据包的输出结果
    在这里插入图片描述
    重点看server report信息
    倒数第一列的425/15844 表示丢失的数据包和总得数据包数量。后面的2.7%表示平均丢包的比率
    倒数第二列的0.005 ms表示传输延迟

六、进程

常用命令: top 、ps 、 pidstat 、 pstree等

  1. top命令
    在这里插入图片描述
    详解参考:上一篇博客
  • 案例 1 : 找到 CPU 使用率最多的前5个进程:ps auxw --sort=-%cpu | head -6
  • 案例 2 : 找到 内存 占用率最多的前5个进程:ps auxw --sort=-%mem | head -6
  1. pidstat命令
    -u 默认的参数,显示各个进程的CPU使用统计
    -r 显示各个进程的内存使用统计
    -d 显示各个进程的IO使用情况
    -p 指定进程号
    -w 显示每个进程的上下文切换情况
    -t 显示选择任务的线程的统计信息外的额外信息

查看那个进程导致CPU使用率,pidstat命令,需要安装:yum install -y sysstat
命令1: pidstat -u 5 1 // 5秒内, 统计1次
在这里插入图片描述
命令2: pidstat -w -p 7090
在这里插入图片描述
UID: 用户ID
PID: 进程ID
%usr: 进程在用户空间占用CPU的百分比
%system: 进程在内核空间占用CPU的百分比
%guest: 任务花费在虚拟机上的CPU使用率(运行在
虚拟处理器)
%CPU: 任务总的CPU使用率
CPU: 正在运行这个任务的处理器编号
Command: 这个任务的命令名称

  1. pstree 命令
    功能: 指定 pid 查找父进程
    安装: yum -y install psmisc
    命令: pstree -aps 进程号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值