• 性能调优学习笔记(1)


    Linux系统调优学习笔记     rhel8.0

    思路:先找出系统瓶颈在哪,再进行调优,每一个调优参数既有优点又有缺点

    调优逻辑性:  架构调优      硬件调优      代码优化      配置优化

                           最有效,成本贵,难实现                       最常用,成本低,效果较差

    调优对象: CPU  内存  磁盘  网络

    调优单位:

    KB    Byte             KB  1000

    Kbps   bit              KiB   1024

    ================================================================

    对系统资源进行监控的常用手段:

    进程监控   ps    

    ps  axo   显示进程的特定字段  

    案例1: 将系统中的进程按内存的使用率排序

     ps  aux |more

     用户          进程ID      CPU          内存     虚拟内存  物理内存      伪终端   状态     开始时间

    VSZ   虚拟内存  :应用程序运行时申请使用的内存

    RSS   物理内存:  服务器分配给应用程序的内存

     TTY   伪终端      tty1~6 服务器真实存在的   tty0 远程登录的终端   tty?  系统进程,不属于任何终端

     

     STAT :状态   S   休眠   R 运行中

    ======================================

    top 指令:

      ni   使用率   id 空闲率

    CPU压测:

     4vcpu 运行4个dd 进程   也不会死机,因为进程优先级一样,轮询使用CPU

    kill 进程   :  kill -15 4003     可以杀掉4003的进程     -9 强制杀掉     -15 平滑杀掉   killall  dd   杀掉所有dd进程

    jobs    查看运行的进程

    判断系统CPU 是否繁忙  ,如果是4个CPU,若CPU1分钟内负载不大于4,则证明系统空闲

    僵尸程序:父进程结束,子进程仍在运行     可以靠重启解决

    ==========================================================

    iostat

    需要安装  sysstat  的包

     yum install sysstat

    一个CPU在同一时刻,只能处理一个任务,偏控制

     GPU:在同一个时刻,可以处理多个任务 ,偏计算

     读缓存  buffer  当读取一个数据,这个数据默认会先读到内存中,再从内存中写入硬盘,同时保留在内存中,以便再次使用 ,释放读缓存不会丢数据!

    [root@localhost yum.repos.d]# sysctl -w vm.drop_caches=3
    vm.drop_caches = 3

    观察一条命令执行所需时间

    [root@localhost yum.repos.d]# time cp /var/ /tmp
    cp: -r not specified; omitting directory '/var/'

    real 0m0.004s
    user 0m0.000s
    sys 0m0.002s

    watch -n 1 "cp -r /var  /tmp"    每秒观察命令的执行情况

     写缓存  dirty page

    Dirty 脏数据  脏页  内存最基本单位 Page    文件系统 block size

    Page size :  X86 4096Byte

    在内存中已经修改的数据,还未写入硬盘,这样的数据如果掉电,会丢失

    #sync  强制将脏页写入硬盘  写缓存

    查看Dirtypage的老化时间 

    [root@localhost yum.repos.d]# sysctl -a |grep dirty

    vm.dirty_expire_centisecs = 3000   单位是百分之一秒   这里是30s老化

     ================================

    回写: 内存中的数据先写入缓存,经过IO整合后再写入硬盘,适用于随机小IO的场景,写性能好,但是数据安全性差,可能丢数据

    透写:内存中的数据直接写入硬盘 ,适用于顺序大IO的业务场景,数据安全性高,但是写性能较差

    案例:后端连接的存储,突然某一时刻写性能突然下降,可能是存储的BBU没电导致回写变成了透写方式

    iostate   不加参数显示系统开机以来的平均值

    tps: 每秒传输的IO请求数量

    nice: 跳进程优先级的参数   -20~19   数字越小优先级越大    renice 调正在运行的进程的优先级

    iostat 1 20   查看近20次IO   1s显示一次,连续显示20次

    dd if=/dev/zero of=/tmp/test2 bs=10M count=200 oflag=direct

    测试写入的是大IO还是小IO

  • 相关阅读:
    vuex mapstate_学习 vuex 源码整体架构,打造属于自己的状态管理库
    正则表达式
    对 Kubernetes 部署进行故障排除的视觉指南
    Uber Go 语言编码规范
    云原生训练营结课总结
    谈谈 Kubernetes Operator
    npm run serve报错
    BATIS PLUS实体类中字段映射MYSQL中的JSON格式
    PHPCMS V9静态化HTML生成设置及URL规则优化
    phpcmsV9 文章页时间问题
  • 原文地址:https://www.cnblogs.com/cloud-yongqing/p/14479405.html
Copyright © 2020-2023  润新知