性能分析初级

  • 服务器
    • 组成:硬件、软件
    • 硬件:cpu、内存、磁盘、网卡
    • 软件:OS(windows、linux)稳定性、安全
      • linux:本身就是一个多用户的系统
      • linux作为服务器,无图像,所有的操作,都是通过命令
      • jire、容器、中间件、docker、项目
      • 服务 VS 服务器
        • 服务:是一个能力的输出体,一定会有端口
        • 一台服务器是可以有多个服务
      • 架构是会影响服务器的性能的 
  • 服务器架构的演进:服务器性能的提升
  • suse是专门针对服务器的一个无图像linux系统,稳定、安全
  • linux分析版本:debian(ubuntu)、fedora(centos)、suse(opensuse)   
    • 遗传:安装软件的命令工具相同
    • Ubuntu: apt-get apt deb(dpkg)
    • centos: yum dnf  rpm(yum rpm)
    • suse: zypper
  • linux系统,不管是什么发行版本,都是基于几乎相同的内核,文件结构也是相同的。
  • linux系统,一切都是文件
  • linux系统建立分区,目的是提升性能
    • 查看linux文件结构:yum install tree -y
    • tree -L 1 /
  • linux 文件结构
    • /boot linux核心文件
    • /bin(/usr/bin)  存放系统中可用的命令:可直接执行的命令
    • /etc 系统管理所需要的所有配置文件
    • /usr unix shared resource 系统的共享文件夹
    • /opt optional给主机额外安装的软件目录,相当于windows的非c盘
    • /home 用户(非root)的根目录
    • /sys 系统文件,记录内核设备树
    • /media 自动识别的外设
    • /mnt 给用户临时挂载外部文件系统
    • /proc  process进程,虚拟文件系统,存储当前内核运行状态的特殊文件,这个内容不在磁盘上,而在内存,可以直接查看、修改系统信息
    • /root 超级权限者的主目录
    • /run 临时文件,系统启动的信息
    • /var 不断扩充的文件,如日志
    • /temp 临时文件
    • /dev device linux的外部设备
  • linux文件权限
    • ls -l 查看文件权限信息
    • drwxr-xr-x
      • 第一个 : d:目录     l:链接      -:文件
      • 第2\3\4个: 归属用户User权限
        • r read 读4、w write 写 2、x execute执行1  -无此权限
        • chmod 777 文件名
      • 第5\6\7个:归属用户组Group权限
      • 第8\9\10个:其他Other用户权限
      • 第12个:归属用户username chown
      • 第13个:归属用户组Groupname chgrp
      • 第14个:大小
      • 第15个:日期时间
      • 最后一个:文件名称
  • linux中安装软件
    • Fedora家族\SUSE家族:Fedora、redhat、centos、suse
      • yum\dnf
        • sudo yum install\remove\update\search pkgname
          • 加速,改国内源
    • Debain家族:debain、ubuntu
      • apt\apt-get 
        • sudo apt-get install\autoremove\uodate\search pkgname
      • Suse家族:suse
        • zypper\yast
  • linux安装rpm\deb文件
    • rpm(Redhat Package Manager)包安装 rpm --help
      • rpm -ivh**.rpm 安装过程中显示正在安装的文件信息及安装进度
      • rpm -e pkgname 卸载软件,不要rpm结尾
      • rpm -Uvh**.rpm 升级包
    • deb包安装(debain\ubuntu)
      • sudo dpkg -i ***.deb 安装
      • -r 卸载
  • linux安装tar.gz文件
    • ***.tar.gz  可以在任意linux发行版本中安装
      • 解压:tar -zxf   ***.tar.gz
      • 进入解压后的文件夹,检查编译:./configure
        • 依赖gcc yum install gcc -y \sudo apt install build-essential
      • 生成编译文件:make
      • 安装:安装 make install
        • make && make install
      • 卸载: make uninstall
  • 命令帮助
    • man、help、info
      • man
        • man 命令名 显示系统手册页中的内容,会展示更多程序相关信息
      • help
        • 命令 --help/-h 获取某个命令相关的帮助
      • info
        • info 命令 能提供比man更多的帮助信息
  • 性能分析基础命令
    • top 常用的性能分析工具,能够实时显示系统找那个各个进程的资源占用状况
      • up 3:49 当前系统启动多长时间
      • 1 user, 有多少用户连接进来
      • load average: 0.00, 0.01,  0.05 系统负载值  
        • 第一个值:过去1分钟系统平均负载
        • 第二个值:过去5分钟系统平均负载
        • 第三个值:过去15分钟系统平均负载
        • 如果第一个值很小,如0.01,说明过去1分钟系统负载分厂低,系统基本没有压力
        • 一般经验:当数值大于cpu核数的50%时就认为系统负载比较高  
        • 如果第二个值,比较大、
          • 怎么判断大小:看cpu的数量,按下数字键1 可以看到当前系统cpu的核数是多少
          • 第一个值很大,第二个值很小,=====现在系统的压力很大,可能还会继续上升
          • 第一个值很小,第二个值很大=====系统正在释放压力,压力在逐渐减小
          • load average的计算:所有cpu使用时间之和+io使用时间之和+与空间时间之和  进行比较算出来的
      • Tasks 171 total 当前运行的进程数多少
        • 按下H Treads 187 total :当前运行的线程数
        • 按h 进入帮助信息
      • 1 running ,真正运行的
      • 170 sleeping, 休息
      • 0 stopped ,停止
      • 0 zombie,僵尸
      • 对应下面的 S列:sleeping 空闲,T:stopped停止 R:running运行 Z:zombie 僵尸
      • %Cpu(s):cpu的使用情况
        • 0.0 us,user space用户态cpu使用率
        • 0.3 sy,sysctl 系统态cpu使用率
        • 0.0 ni,nice进程优先级切换cpu使用率
        • 99.7 id,idolt空闲
        • 0.0 wa,wait等待
        • 0.0 hi,hardware IRQ硬中断
        • 0.0 si,software IRQ软中断
        • 0.0 st,管理程序占用时间
      • 大写的E
        • buff/cache
          • buff 缓冲区
            • 是磁盘上虚拟出来一个空间,用于平衡 内存 与 磁盘 的速度
          • cache 缓存 
              • 是内存中虚拟出来的一个空间,用于平衡 cpu 与 内存的速度
        • swap 交换分区
          • avail  Mem 可以用于下一次使用的内存大小
        • PR:优先级   越小优先级越高  
        • NI:进程优先级,越小优先级越高 
        • VIRT 虚拟的内存使用大小
        • RES 进程使用的真实的物理内存大小
        • SHR 进程使用的共享内存大小
      • 常用
        • b n 2 加粗显示cpu使用率最高的前两个线程
        • m 查看内存使用率
        • t 查看cpu的使用率
        • s\d 2 改变列表数据刷新频率
        • H 查看线程
        • top -H -p tid 查看某个进程先线程情况
    • ps(process status)
      • man ps:获取帮助 
      • 获取当前进程状态
      • ps -ef\-eF\-elf 使用标准语法查看系统上的每个进程
      • ps aux\ax  使用BSD语法查看系统上的每个进程
      • ps -ejH\axms 显示进程树
      • ps -eLf\axms 显示线程信息
    • vmstat
      • vmstat(yum install sysstat -y)
        • 虚拟内存统计的缩写,可以对虚拟内存、进程、cpu活动进行监控
        • 参数
          • -a,--active 显示活跃或非活跃的内存
          • -f,--forks 线程从系统启动至今的fork数量
          • -m,--slabs  显示slab信息
          • -n,--one-header 头信息仅显示一次
          • -s,--stats 以表格方式显示时间计数器的内存状态
          • -d,--disk 报告磁盘状态
          • -p,--partion 显示指定的硬盘分区状态
          • -s,--unit 输出信息的定位
        • vmstat 3 :每3秒显示一次数据
          • procs:r显示多少进程在等待  b显示多少进程在不可中断的休眠
          • memory:swpd 显示多少块被换出磁盘, free 显示剩下的空闲块 ,buff 正在被用作缓冲区的块 , cache 正在被用作操作系统的缓存
          • swap:现在交换活动,si 每秒有多少块正在被换入内存  so正在被换出到磁盘
          • io:显示了多少块从设备读取(bi)和写出(bo),通常反映了硬盘I/O
          • system:显示每秒中断(in)和上下文切换(cs)数量
          • cpu:显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO
    • mqstat  
      • 实时监控工具,主要报告与cpu相关统计信息
      • mpstat 1 10 每秒显示一次监控数据,总共显示10次
      • mpstat -P ALL 3 3秒获取一次所有的监控数据
    • pidstat
      • 监控全部或指定进程的cpu、内存、线程、设备io等资源占用情况和上下文切换信息,是一个常用的进程性能分析工具,用来实时查看进程的cpu、内存、I/O以及上下文切换等指标信息
      • pidstat -u -w 1
        • cswch/s (voluntary context switches)自愿上下文切换,nvcswch/s(non voluntary context switches)非自愿上下文切换
    • 如何分析cpu情况
      • 先用top 》vmstat
        • 看cpu
          • 先用top 》vmstat 》mpstat、pidstat(yum install stsstat -y)
    • netstat 
      • 用于显示与IP\TCP\UDP\ICMP协议相关的数据统计,一般用于检验本机各端口的网络连接情况
      • -a 显示所有连线中的socket
      • -n 直接使用ip地址,用数字方式显示,而不通过域名服务器
      • -p 显示正在使用socket的程序识别码和程序名称
      • -e 显示网络相关信息
      • -t 显示tcp传输协议的连线状况
      • netstat -anp 可以查看所有进程和进程的服务id
      • netstat -anp | grep '进程关键词或端口‘ 通过关键词过滤查找进程
      • netstat -apl
    • iostat
      • 显示设备,分区和网络文件系统的cpu统计信息和输入/输出统计信息
      • -c 显示CPU使用率报告
      • -d 显示设备使用率报告
      • -k 以每秒千字节显示统计报告
      • -m 以每秒兆字节显示统计报告
      • -x 显示扩展统计信息
      • iostat -d 2 每2秒显示一次连续的设备报告
      • iostat -d 2 6 每隔2秒显示设备信息,总共显示6次
      • iostat -x sda 2 每隔2秒,显示设备sda的扩展信息
        • sd\hd 表示硬盘,a表示第1块盘,1表示第1个分区
        • sd=Serial ATA Disk 表示硬盘是scsi,SATA串行接口
        • hd=Hard Disk 表示设备是IDE(或ATA)并行接口,U盘也是scsi,所以U盘也是sda
        • vmware中把磁盘做成scsi设备,所以设备名称是sda
      • iostat -dk 1 每隔1秒以千字节显示设备信息
      • iostat -dxm 1 每隔1秒以兆字节显示设备扩展信息
    • dstat
      • 是一个用例替换vmstat、iostat等命令的工具,功能比较全,有彩色的界面  yum install dstat -y
      • -c 显示cpu系统占用情况
      • -d 显示磁盘读写情况
      • -i 显示中断情况
      • -l 显示系统负载
      • -m 显示内存使用情况
      • -n 显示网络情况
      • -p 显示进程状态
      • -r 显示io运行情况
      • dstat -lcmsdrpgny
        • hiq\siq 硬中断\软中断
        • int\csw 中断次数\上下文切换次数
      • dstat -lcmdry   
    • sar   
      • 几乎可以统计服务器的所有
      • -B 分页状况
      • -b I/O和传输率信息
      • -d 块设备状况
      • -l 中断信息状况
      • -n 网络统计信息
      • -q 系统负载压力统计
      • -r 内存利用率信息
      • -u CPU利用率信息 
      • sar -u 1 每隔1秒钟统计一次CPU使用情况
      • sar -r 1 每隔1秒钟统计一次内存使用情况
      • sar -W 1每隔1秒统计一次交换分区使用情况
      • sar -b 1 每隔1秒统计一次I/O相关使用情况
      • sar -n socket 1 socket统计
        • sar -n TCP 1 tcp连接统计
      • sar -w 1 每秒上下文交换信息
      • sar -q 1 队列长度
      • sar -B 1页交换速率 
posted @ 2021-07-10 11:28  sinder2018  阅读(25)  评论(0)    收藏  举报