xiaojizhi2023

V1

2023/03/01阅读:37主题:默认主题

性能分析

性能分析

一、机器配置查看

# 总核数=物理CPU个数x每颗物理CPU的核数
# 总逻辑CPU数=物理CPU个数x每颗物理CPU的核数x超线程数
grep "physical id" /proc/cpuinfo |uniq |wc -l           # 查看物理CPU个数
grep "processor" /proc/cpuinfo |wc -l                   # 查看逻辑CPU的个数
grep "cpu cores" /proc/cpuinfo |uniq                    # 查看每个物理CPU中core的个数(即核数)

cat /proc/cpuinfo |grep name |cut -d: -f2 |uniq -c      # 查看CPU信息(型号)
cat /proc/cpuinfo |grep MHz |uniq                       # 查看CPU主频
cat /proc/cpuinfo |grep name |cut -d: -f2 |uniq -c

Linux 查看物理 CPU 个数、核数、逻辑 CPU 个数

线上故障排查全套路,运维小哥可自查~

tcpdump 使用参考

二、常用分析工具

  • 主要分析工具

    • vmstat、sar、mpstat、pidstat:检测是否存在 CPU 瓶颈(线程);
    • vmstat、free:检测是否存在内存瓶颈(进程);
    • iostat:检测是否存在磁盘 I/O 瓶颈;
    • netstat:检测是否存在网络 I/O 瓶颈;
  • 排查流程

    • CPU:top jstack vmstat
    • 磁盘:df iostat iotop
    • 内存:free OOM
    • 网络:netstat
  • tcpdump 的用法

    • tcpdump 是一款网络抓包工具,用于捕捉网络上的数据包,并将其打印出来或保存到文件中供以后分析使用。
    • tcpdump -vvv -nn -i eth0 icmp and src 192.168.10.7:捕获源 IP 地址为 192.168.10.7 的 ICMP 数据包。
    • tcpdump -vvv -nn -q -XX -i eth0 tcp dst port 22:捕获目标端口为 22 的 TCP 数据包。
    • tcpdump -vvv -XX -nn -i eth0 src 192.168.9.73 and dst port 10001:捕获源 IP 地址为 192.168.9.73,目标端口为 10001 的数据包。
    • tcpdump -i eth0 upd port 1814 -w ./udp.cap:捕获端口为 1814 的 UDP 数据包。
tcpdump
tcpdump

全网最详细的 tcpdump 使用指南

analysis-and-tools
analysis-and-tools
tcpdump-cheat-sheet
tcpdump-cheat-sheet

java 分析工具

  • Linux top 命令详解:持续监听进程运行状态 (biancheng.net)

    • top(**1分钟、5分钟、15分钟的负载情况**) # 命令查看占用 CPU 高的进程 PID(如果 CPU 是单核的,则负载数值超过 1 就是高负载;如果 CPU 是四核的,则负载数值超过 4 就是高负载,一般认为不应该超过服务器 CPU 的核数)

      运行(R)、空闲(I)、不可中断睡眠(D)、可中断睡眠(S)、僵尸(Z)、暂停(T)

    • top -Hp 进程PID # 看占用 CPU 最高的线程 PID(Shift+p)

    • printf "%x\n" 23891 ⇒5d53 # 将线程 ID 转为 16 进制线程 PID

    • jstack 进程PID > thread_stack.log # 保存线程栈日志 jstack 进程PID |grep -20 5d53

    • jstat -gcutil 4241 2000

  • 几个例子

    1. vmstat 5 5            # Virtual Memory Statistics
    [xy@VM-16-11-centos ~]$ vmstat 5 5
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so     bi    bo    in   cs us sy id wa st
     1  0      0  75752 213904 1404116    0    0     0     9    1    0  0  0 99  0  0
     0  0      0  74992 213904 1404152    0    0     0     0  614 1083  0  0 99  0  0
     ...       ...         ...            ...           ...                ...
     0  0      0  75300 213904 1404168    0    0     0     7  635 1178  0  0 100  0  0

    2. sar -u 3 2 整体/ sar -d 3 5 磁盘/ sar -r 5 2 内存
    3. mpstat -P ALL 5       # Multiprocessor Statistics

    4. iostat -d -k -x 3 2
    [xy@VM-16-11-centos ~]$ iostat -d -k -x 3 2
    Linux 3.10.0-1160.45.1.el7.x86_64 (VM-16-11-centos)  10/18/2022  _x86_64_ (2 CPU)

    Device: rrqm/s  wrqm/s  r/s   w/s   rkB/s  wkB/s  avgrq-sz  avgqu-sz  await r_await w_await  svctm %util
    vda     0.00    1.47    0.01  2.27  0.31   17.61  15.69     0.00      2.06    4.06    2.05   0.45  0.10
    scd0    0.00    0.00    0.00  0.00  0.00   0.00   102.08    0.00      0.73    0.73    0.00   0.41  0.00

    ps aux |grep mysqld |grep –v grep |awk '{print $2 }' |xargs kill -9     # 杀掉某一程序; |xargs -i kill -9 {} |xargs -I{} kill -9 {}
    ps -elf |awk '{if ($2 == "Z"){print $4}}' |xargs kill -9                # 杀掉Zombie
    pstree -a -u -p

    # 抓取 UDP端口数据
    tcpdump -c 5 -vvv -nn -i eth0 icmp and src 192.168.100.62
    tcpdump -c 2 -vvv -nn -i eth0 -q -XX tcp dst port 22
    nc -vuz x.x.x.x  xxxx
    nc -vu x.x.x.x xxxx

三、关于 iptables

3.1. 概览 流程图 ⌛

iptables
iptables
iptables流量转化
iptables流量转化
raw 表 mangle 表 nat 表 filter 表(默认)
PREROUTING 链 PREROUTING 链 PREROUTING 链
数据包刚到达防火墙改变目的地址 DNAT INPUT 链
主要对外部包进入 linux 系统进行信息过滤
OUTPUT 链 POSTROUTING 链 POSTROUTING 链
数据包离开防火墙改变源地址 SNAT FORWARD 链
主要对内部 linux 系统索要发送的包进行信息过滤
/ INPUT 链 OUTPUT 链
改变本地产生的包的目的地址 OUTPUT 链
将外面过来的包传递到内部计算机中
/ OUTPUT 链 / 链里是对应的规则
/ FORWARD 链 / /
在连接跟踪之前处理数据包 拆解报文,做出修改,重新封装功能 网络地址转换功能,内核模块 过滤功能,防火墙,内核模块

3.2. 语法规则

25 个 iptables 常用示例

25 个 iptables 非常经典的用法

四、RAID(独立磁盘冗余技术) & LVM(Logic Volume Managent)

4.1. RAID

  • RAID0-Striping

    1. 组成:多块硬盘(至少 2 块)通过硬件或软件串联一起,组成大的卷组,提升了硬盘数据的吞吐量,但不具备数据备份和错误修复能力;
    2. 特点:读写性能提升;无冗余(容错)能力;空间利用率:ns(s–> 一块盘利用率);至少 2 块;
  • RAID1-Mirror

    1. 数据写到多块硬盘设备上,当某一块硬盘发生故障后,一般会立即以热交换方式来恢复数据的正常使用,但硬盘的使用率却下降了,只有 33%左右;
    2. 性能提升:写下降,读提升;冗余能力:有;空间利用率:1/2;至少 2 块;
  • RAID5 1. 将硬盘设备的数据奇偶校验信息保存到除自身外每一块硬盘设备上,当硬盘出现问题,通过奇偶校验信息来尝试重建损坏的数据; 2. 性能提升:读写提升;冗余能力:有;空间利用率:(n-1)s/n;至少 3 块;

    4.2. LVM

    • 物理卷(PV)真正的物理硬盘或者分区;
    • **卷组(VG)**将多个物理卷合起来组成卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘的不同分区,抽象为一个逻辑硬盘;
    • **逻辑卷(LV)**卷组是一个逻辑硬盘,硬盘分区后才可以使用,类似的,从卷组出来的分区为逻辑卷;
VM
VM

LVM 管理减少 swap 分区空间增加到根分区_ann67741255 的博客-CSDN 博客

分类:

工具介绍

标签:

开源软件

作者介绍

xiaojizhi2023
V1