调优是一种感知

调优按照成本和性能

一.架构及调优

二.代码及调优

三.配置类调优

从调优效果和成本成正比

设计电商,日访问百万级,未来可能千万级

数据库 系统 服务器多少台 缓存 appache,nginx选什么 负载均衡用什么 七层怎么设计..... (可不可以线性扩容?) 一百万预算

架构级

12306最复杂

电商可以充分利用缓存技术。电商有10000件商品,卖了9000。还剩1000,电商也可也不用着急。慢慢的更新

12306每一天,每一趟车,每一个座位都是唯一的。不能利用缓存机制

12306重新做了架构设计

12306客户做10次查询,才会有一次支付,查询是大头。他们把架构切分

微服务化,把服务分拆。后台有很多台服务器

电商卖两件退两件前台完全不会受影响,数据库也不用马上更新

腾讯视频

几百万人看热门高清视频,需要几百g带宽,不会出现卡,以及还会出现缓存

百分之90的流量来自cdn缓存。分散在各地机房分担业务

架构该如何设计?

房子该怎么设计才好

代码级

你把sql语句写成循环

把简单代码写的复杂

配置级

磁盘 三种调度算法

deadline最终期限(小IO) cfq完全公平原则(不好不坏) noop无调优 as适合于大IO的算法

守门员站中间,对手向哪里踢?

站中间就是折中,所以才需要我们调优

让数据库就跑在这个八个cpu上,另外八个跑其他业务

利用缓存,否则数据库来回在16个cpu上跑失去缓存意义

有些多喝热水
有些病吃个药就好
有些需要大手术 考试有东西所以不难,没东西rh442最难
rh442 不用死记硬背,要理解

scale 天平,磅秤;天平盘 进制位

学会使用计算器

bc



未保留小数

scale可以保留小数,不是四舍五入,是直接去掉的那种

^20在不同的保留小数值上,误差会变大

单位

KB:1000为换算单元

KiBi:1024为换算单位

Kb: bit位 需要/8

KB:Btye

单位换算,非常简单

调优的方法 (还有许多)

grub2

vi /etc/default/grub



改了之后

[root@localhost boot]# grub2-mkconfig -o /boot/grub2/grub.cfg

通过重新给值改变内核参数

[root@localhost boot]# vi config-4.18.0-193.el8.x86_64

告诉你我打开了哪些功能,他只是告诉你,改成n也没用

编译内核的时候保存你的哪些选项

改功能重新编译内核工作量就大了

sysctl

除了grub2还可以

vim /etc/sysctl.conf

参数写在这个里面,下次开机就可以读到

sysctl -a 列出可调优参数

sysctl改的参数在 /proc/sys



可以通过echo调优,立即生效。修改内存中数据,临时有效

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0 [root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
直接-p读一遍文件 [root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
改成0再读 系统启动会读sysctl.conf
[root@localhost ~]# sysctl -a | wc -l
1248
老师怎么有2204个我才1248个

proc进程

proc下的数字都是进程号

对进程调优,就是对文件夹调优

sys目录

cd /sys/ 设备、总线、模块相关

以上都是内存中

立即生效,重启可能就不生效

将所有命令写成一个服务,开机运行服务

[root@localhost ~]# vi /etc/rc.local
命令每次开机都启动,可以写在这里面 [root@localhost /]# cd /etc/rc.d/
[root@localhost rc.d]# ls
init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local
[root@localhost rc.d]# ll
total 4
drwxr-xr-x. 2 root root 37 Jun 22 20:06 init.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc0.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc1.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc2.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc3.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc4.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc5.d
drwxr-xr-x. 2 root root 6 Sep 10 2018 rc6.d
-rw-r--r--. 1 root root 484 Jun 23 15:37 rc.local
[root@localhost rc.d]#
得给rc.local执行权限

以服务形式启动

[root@localhost system]# vim /usr/lib/systemd/system/tcsd.service
模仿
[Unit]
Description=TCG Core Services Daemon [Service]
Type=forking
ExecStart=/sbin/tcsd [Install]
WantedBy=multi-user.target [root@localhost ~]# cp realtime /usr/local/bin/
[root@localhost ~]# cd /usr/lib/systemd/system/
[root@localhost system]# pwd
/usr/lib/systemd/system
[root@localhost system]# cat realtime.service
[Unit]
Description=Realtime process [Service]
Type=forking
ExecStart=/usr/local/bin/realtime & [Install]
WantedBy=multi-user.target [root@localhost system]# systemctl daemon-reload
systemctl enable realtime.service
Created symlink /etc/systemd/system/multi-user.target.wants/realtime.service → /usr/lib/systemd/system/realtime.service.
照着其他服务写服务
加载服务时,可以读到/etc/systemd/system
bad-setting 可以systemctl status 查看更多信息

调优的功能

参数不知道什么意思

学会查帮助文档,里面有英文的参数解释

[root@localhost yum.repos.d]# yum list all | grep kernel-doc

kernel-doc.noarch 4.18.0-193.el8

[root@localhost yum.repos.d]# rpm -ql kernel-doc
查找他的所有文件 [root@localhost kernel-doc-4.18.0]# grep -irn ip_forward Documentation/
Documentation/s390/Debugging390.txt:1930:cat /proc/sys/net/ipv4/ip_forward
Documentation/s390/Debugging390.txt:1933:telling me ip_forwarding is not on to switch it on I can do
Documentation/s390/Debugging390.txt:1934:echo 1 > /proc/sys/net/ipv4/ip_forward
Documentation/s390/Debugging390.txt:1936:cat /proc/sys/net/ipv4/ip_forward
Documentation/virt/uml/UserModeLinux-HOWTO.txt:1311: bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
Documentation/virt/uml/UserModeLinux-HOWTO.txt:1830: host# echo 1 > /proc/sys/net/ipv4/ip_forward
Documentation/networking/ip-sysctl.txt:3:ip_forward - BOOLEAN
Documentation/networking/ip-sysctl.txt:46:ip_forward_use_pmtu - BOOLEAN
Documentation/networking/ip-sysctl.txt:84:ip_forward_update_priority - INTEGER
[root@localhost kernel-doc-4.18.0]# pwd
/usr/share/doc/kernel-doc-4.18.0
[root@localhost kernel-doc-4.18.0]#
[root@localhost kernel-doc-4.18.0]# vi Documentation/networking/ip-sysctl.txt

红帽7光盘里没有这个包

fat32 < 4G

应付光盘用户

[root@localhost tmp]# find /proc /sys  -perm /200 -type f > /tmp/tunables

可调优文件

监控

监控为调优的基础。通过监控发现系统的瓶颈

CPU 内存 磁盘 网络 四大子系统

yum -y install sysstat



avg-cpu 和为100% idle为空闲率

iostat不加任何参数,自从系统启动以来我们所看到的状态,不是当前的结果

开机到现在的平均值

iostat 1 5 /dev/sda 一秒显示一次,连续显示五次

user level的使用百分比,应用程序消耗的比较多

system level 内核的级别消耗多

nice nice调cpu消耗资源

iowait io等待时间太长,系统瓶颈为磁盘

steal 虚拟化相关。因虚拟化的开销而消耗资源

idle 空闲率

kB_read/s kB_wrtn/s 每秒的值 kB_read kB_wrtn 总值

tps 每秒传输io请求数

小io与大io

每秒读和写加在一起 / tps 为每秒io大小

可以得知io大小,可以判定机器的io大小来判定调优思路

同样的资源,虚拟机差于物理机

地址转换带来的开销

虚拟化 地址转换

dd if=/dev/zero of=/dev/null &

cpu空消耗

dd 为内核提供命令所以 消耗的是system

一个dd消耗一个cpu



top看到的是一个满载的cpu

多个dd同时运行可以cpu负载均衡

进程轮询,负载均衡

但是chrt -f 之后就不行。因为指定了cpu的机制

抢占资源

chrt -f 10 dd if=/dev/zero of=/dev/null &

先进先出

测试硬盘

dd if=/dev/zero of=/tmp/test bs=4k count=102400 oflag=direct

跳过内存直接写硬盘 (通常情况下,写到缓存慢慢写进磁盘)

4k为小io场景

user space 用户空间

kernel space 内核空间 (装完内核就会有)

存储 RAID 10 块盘 到OS只能看到一块盘

RAID性能差,也许是其中某一块盘有问题

可以进入到存储底层的OS去看

iostat -x 可以看到具体情况

svctm:IO平均服务时间

总结

调优本质 调优难。综合性很强,上层应用,底层原理

调优方法

换算单位

iostat

RHCA rh442 001 调优本质 调优方法 监控的更多相关文章

  1. MySQL管理之道:性能调优、高可用与监控内置脚本

    MySQL管理之道:性能调优.高可用与监控内置脚本 随书附送脚本 keepalive配置文件和脚本开源工具pssh批量管理服务器(python) 下载地址 http://files.cnblogs.c ...

  2. MySQL管理之道:性能调优、高可用与监控》迷你书

    MySQL管理之道:性能调优.高可用与监控>迷你书 MYSQL5.5.X主要改进 1.默认使用innodb存储引擎2.充分利用CPU多核处理能力3.提高刷写脏页数量和合并插入数量,改善I/O4. ...

  3. iOS-Core-Animation-Advanced-Techniques/12-性能调优/性能调优.md

    性能调优 代码应该运行的尽量快,而不是更快 - 理查德 在第一和第二部分,我们了解了Core Animation提供的关于绘制和动画的一些特性.Core Animation功能和性能都非常强大,但如果 ...

  4. MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

    最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...

  5. MySQL管理之道,性能调优,高可用与监控(第二版)pdf下载

    MySQL管理之道,性能调优,高可用与监控(第二版) 书中内容以实战为导向,所有内容均来自于笔者多年实践经验的总结和新知识的拓展,同时也针对运维人员.DBA等相关工作者会遇到的有代表性的疑难问题给出了 ...

  6. JVM调优总结-调优方法

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪 JProfiler ...

  7. java虚拟机学习-JVM调优总结-调优方法(12)

    JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 ...

  8. java性能调优---------------------JVM调优方案

    JVM的调优的主要过程有: 1.确定堆内存大小(-Xmx.-Xms) 2.合理分配新生代和老年代(-XX:NewRatio.-Xmn.-XX:SurvivorRatio) 3.确定永久区大小(-XX: ...

  9. Java性能调优(一):调优的流程和程序性能分析

     https://blog.csdn.net/Oeljeklaus/article/details/80656732 Java性能调优 随着应用的数据量不断的增加,系统的反应一般会越来越慢,这个时候我 ...

  10. spark调优——JVM调优

    对于JVM调优,首先应该明确,(major)full gc/minor gc,都会导致JVM的工作线程停止工作,即stop the world. JVM调优一:降低cache操作的内存占比 1.   ...

随机推荐

  1. nginx aio模块添加与配置

    1. 升级目的 让现有服务平滑过渡到高版本,减少服务漏洞,提高服务性能 让其支持nginx最新特性 nginx threads模块 2. 获取nginx1.7.2版本 wget http://ngin ...

  2. Java 中 hashCode 和 equals 方法是什么?它们和 == 各有什么区别?

    在 Java 中,hashCode 和 equals 方法都是 Object 类的方法.它们的作用分别如下: hashCode 方法返回对象的哈希码,用于支持基于哈希表的集合,如 HashMap.Ha ...

  3. Vue插槽与作用域插槽

    title: Vue插槽与作用域插槽 date: 2024/6/1 下午9:07:52 updated: 2024/6/1 下午9:07:52 categories: 前端开发 tags: VueSl ...

  4. Angular 集成 StreamSaver

    应用场景: 实现目标: 在网页端实现大文件(文件大小 >= 2 G) 断点续传 实际方案: 发送多次请求, 每次请求一部分文件数据, 然后通过续写将文件数据全部写入. 难点: 无法实现文件续写, ...

  5. Linux 提权-Capabilities

    本文通过 Google 翻译 Capabilities – Linux Privilege Escalation - Juggernaut-Sec 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字 ...

  6. WebUI自动化测试中关于图片验证码的解决方法

    关于怎么识别图片中的文字,传送门:https://www.cnblogs.com/teangtang/p/16157880.html 实现代码如下: #! /usr/bin/env python # ...

  7. 常用RAID级别简介

    RAID不同等级的两个目标: 1. 增加数据可靠性 2. 增加存储的读写性能 RAID级别: ​ RAID-0: 是以条带的形式将数据均匀分布在阵列的各个磁盘上 ​ 优点:读写性能高,不存在校验,不会 ...

  8. Springboot3.0+spring6.0+JDK17+配置jsp和打war包

    由于某些缘故,公司的产品需要升级,但并不希望花费大量时间重写前端代码(原来的就不是前后分离的).所以虽然spring和springboot都升级为最新的版本,但是依然还是需要支持jsp,并继续用打包为 ...

  9. cv2 判断图片是冷还是暖

    把图片的颜色空间转为HSV H表示色调(下图横轴), 图片的平均H值可用于区分冷暖

  10. 高通Android平台 电池 相关配置

    背景 在新基线上移植有关的代码时,在log中发现有关的东西,请教了有关的同事以后,解决了这个问题. [ 12.775863] pmi632_charger: smblib_eval_chg_termi ...