zoukankan      html  css  js  c++  java
  • 性能调优分析思路

    环境:基于centos7 为主的

    使用的工具环境都是docker配的

    四大指标:cpu io  内存  网络 

    如何测试性能呢?????????
    今天的目的就是学的cpu和io牵扯就是linux命令
    1.性能测试领域
    2.学习分析思路 性能调优 CPU IO 能说出你的分析思路
    具体点
    1. Linux 性能测试
    2. 分析树 CPU高-----?------?
    环境-centos
    依赖docker
    3.场景设计??????
    要有基本建模能力
    单接口 基准 场景混合
    怎么压?
    发现问题如何初步定位??????
    RT TPS threads
    资源使用情况
    四大指标:cpu io 内存 网络开销
    预备知识:
    要知道物理核和逻辑核
    1.cpu 有几个核 单独执行几个任务 并发
    4核 20进程 就会正常切换
    4核 8逻辑核
    怎么查,命令要急死
    2. 进程 线程 协程 cpu是时间管理大师
    虽然进程嵌套线程,cpu负责调度线程
    协程 -田径里面跑步-里面还有赛道 ,赛道就是协成
    协成的调度cpu管不了
    状态的形式
    状态:1.运行 2.等待 (资源不够用、cpu调度) 3.停止 4. 僵尸
    查看cpu????????????
    cat /proc/cpuinfo | grep 'model name' | wc -l
    一个叫利用率 干活的时间/总时间 就用top命令 top后按1

    一个叫平均负载 比如老板跟你定工资,我看你一小时已经做了多少任务,手头多少任务,多少在排队
    看看cpu看看任务队列里面,等待 或正在 使用cpu的任务队列长度
    wa IO开销
    要指标-当你tps上到多少,rt不能过长 错误率 不能报错
    再有资源使用的指标
    1万 rt<500ms 错误率 <千4 资源使用指标:低于80%
    平均负载指标:
    小于核*1.5
    2核心 3

    CPU 使用率 平均负载
    高 高 这种叫计算密集型
    yum install jstack

     定位问题???????????????????????

    先top看最大进程号
    top -Hp 14155 在看进程号下的线程
    cd /usr/local/src/jdk1.8.0_221/bin
    ./jstack 14155 > /root/s.log 这个输入进程号,打出日志
    printf "%x " 14182 这个是进程下的线程号,把进程号下面的线程号打印出来
    cat o.log |grep '3766' 看日志定位到那行代码有问题

    垃圾回收机制的问题,会打印出代码Gc
    jstat -gcutil 【PID】 1000 100 查看每秒钟gc的情况
    jstat 线程调用关系
    jmap 查看线程的堆内存
    进入usr/local/src/jdk1.8.0_221/bin
    ./jmap -heap 3075
    另外一种
    jmap -dump:format=b,file=18214.bin 18214
    ./jmap -dump:format=b,file=25473.bin 25473 进程号
    打印出bin文件
    在本地C:Program FilesJavajdk1.8.0_181in打开 lvm.exe
    点击类查看,可以看到内存从高到底排,把最高的类型拿出来分析

    dokcer
    docker run --name nginx -p 10000:80 -itd feisky/nginx:sp
    docker run --name phpfpm -itd --network container:nginx feisky/php-fpm:sp
    docker
    分为镜像,可以用镜像启动多个实例
    先下一个镜像然后下多个容器
    镜像 ---- 容器 ---- 启动 实例
    docker image .....
    docker ps -a
    docker stop xxx(id) 停止容器
    docker rm id 删除一个容器
    短进程 短线程 这种场景????
    大量的出生和死亡
    docker exec -it 7311e50d1d89 /bin/bash
    重启docker服务 systemctl restart docker
    pstree | grep stress

    cpu ---- 进程 线程 死循环+慢语句+计算复杂 FullGC大对象回收,分析堆的使用情况
    如果发现GC也没发现需要看看代码那部分创建了短进程
    某个命令 短进程
    192.168.29.129:10000

    主要是

    第一种 cpu进程过高 

    第二种 慢代码 频繁垃圾回收

    第三种  短进程  

  • 相关阅读:
    算法分析(3)——冒泡排序真的慢吗?
    算法分析(2)——大O和大Θ
    算法分析(1)——数据的影响和函数的增长
    递归的逻辑(5)——米诺斯的迷宫
    递归的逻辑(4)——递归与分形
    李洪强和你一起学习前端之(9)规避脱标,CSS可见性,滑动门案例
    iOS应用管理(优化)
    iOS开发-应用管理
    iOS开发-Tom猫
    iOS 10.3.3 更新背后的故事
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/15392395.html
Copyright © 2011-2022 走看看