• 性能问题定位工具


    性能问题定位工具

    1.网速测试

    安装iperf

    yum install epel-release
    从epel源中安装
    yum install -y  iperf
    

    带宽检测

    iperf -s 开启服务端
    
    iperf -c ip
    

    丢包问题

    tcpdump进行抓包
    
    tcpdump -i eth0 -s 3000 port 8080 -w /home/tomcat.pcap
    
    对于抓包文件采用wireshark进行分析
    
    丢包(TCP DUP ACK) 重传(retransmission),超时重传,
    

    2.cdn性能测试

    cdn 缓存,回源问题  
    
    304请求,浏览器是否使用本地缓存。比较last_modified 和if_modified_since
    
    通过实践戳来判断,浏览器缓存和cdn缓存
    

    3.DNS基础

    路由解析

    泛域名解析

    4.分布式服务链路追踪

    http入口产生一个traceId
    
    分发到rpc调用,cache,db,jms调用链路中
    
    google的著名论文dapper和zipkin
    
    日志聚合,绑定链路日志和业务日志
    
    采样采集,慢请求,异常服务。
    
    日志量大。日志异步写入,环状数组,日志组件自研
    
    共享信息放在ThreadLocal中。比如traceId
    

    5.网卡性能问题定位

    tsar -l  -i 1 --traffic
    查看网卡的进出流量
    

    6.CPU性能问题定位

    tsar -l  -i 1 --cpu
    
    软件问题定位,perf 采样所有进程数据
    
    perf record -F 99 -a -g -- sleep 30
    
    java进程的函数map:java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce PID
    
    输出函数和地址的map
    
    输出火焰图
    perf script | stackcollapse-perf.pl | flamegraph.pl --color=java --hash > flamegraph.svg
    

    7.内存性能问题定位

    -堆内内存问题,

    采用jmap dump内存,采用离线工具分析
    
    jprofile、mat
    

    -堆外内存问题

    a.google-perftools

    yum install -y google-perftools graphviz
    
    export LD_PRELOAD=/usr/lib64/libtcmalloc.so.4
    
    export HEAPPROFILE=/home/testGperf.prof
    
    执行程序,结束程序,生成prof
    
    分析prof
    
    生成svg, pdf,text
    pprof --svg $JAVA_HOME/bin/java testGperf.prof.0001.heap > test.svg
    
    pprof --pdf $JAVA_HOME/bin/java testGperf.prof.0001.heap > test.pdf
    
    pprof --text $JAVA_HOME/bin/java testGperf.prof.0001.heap > test.txt
    

    b.jemalloc定位(优势,适合长时间trace)

    sudo apt-get install graphviz
    编译安装
    ./configure --enable-prof --enable-stats --enable-debug --enable-fill
    make
    make install

    运行配置
    export MALLOC_CONF="prof:true,prof_gdump:true,prof_prefix:/home/jedump/jez,lg_prof_interval:30,lg_prof_sample:17"

    export LD_PRELOAD=/usr/local/lib/libjemalloc.so.2
    运行
    java -jar target/spring-boot-jemalloc-example-0.0.1-SNAPSHOT.jar

    jeprof --show_bytes --svg jez.*.heap > app-profiling.svg

    注明:如果在docker容器中,推荐用pprof,jemalloc只显示函数地址,不显示函数名

    8.机器资源配额问题

    /etc/security/limits.conf

    • soft nofile 65536
    • hard nofile 65536

    控制该用户文件句柄数

    9.磁盘性能问题定位

    tsar -l -i 1 --io

  • 相关阅读:
    APP 弱网测试可能会出现的bug
    Monkey 稳定性测试
    设计模式 策略模式
    设计模式 单例模式
    Linux常用命令(三)文件权限管理
    Linux常用命令(二)文件目录管理命令
    Linux常用命令(一)
    WSL安装yum报错:E: Unable to locate package yum
    使用LxRunOffline迁移WSL
    关于PyQt5 setPalette 设置背景不生效问题
  • 原文地址:https://www.cnblogs.com/zhulongchao/p/7225367.html
Copyright © 2020-2023  润新知