性能调优学习笔记(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

原文地址:https://www.cnblogs.com/cloud-yongqing/p/14479405.html