首页 > 其他分享 >kingbaseES 优化之操作系统瓶颈排查

kingbaseES 优化之操作系统瓶颈排查

时间:2023-09-18 16:22:41浏览次数:35  
标签:操作系统 查看 瓶颈 0.00 排查 内存 磁盘 kingbaseES CPU

针对操作系统性能瓶颈的判断和排查是数据库优化工作的一项重要技能,尤其是针对实例整体优化

操作系统的性能瓶颈排查无外乎四个方面

CPU、内存、磁盘、网络

针对这四个方面整理了一些相关心得和大家分享。

在判断系统瓶颈之前首先我们要知道操作系统资源的极限值在哪里

收集系统信息

首先CPU

我们更关心的时CPU处理线程数和使用率可以通过lscpu 收集cpu相关信息

比如:cpu型号 ,物理核数、NUMA节点数、厂商等等信息

[kingbase@localhost bin]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
座: 1
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 126
型号名称: Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
步进: 5
CPU MHz: 1190.387
BogoMIPS: 2380.77
超管理器厂商: KVM
虚拟化类型: 完全
L1d 缓存: 48K
L1i 缓存: 32K
L2 缓存: 512K
L3 缓存: 6144K
NUMA 节点0 CPU: 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase avx2 invpcid rdseed clflushopt arch_capabilities

磁盘

磁盘我们需要区分

磁盘的类型(不同磁盘类型针对的数据库参数配置和磁盘调度规则不一样)

相关指令和方法

1、grep ^ /sys/block/*/queue/rotationa

0 固态 1 机械

2、lsblk -d -o name,rota

0 固态 1机械

磁盘的读写速度(磁盘读写速度其实需要结合数据库实际blocks配置和读写比例判断,我更习惯通过8k块的随机读写来判断)

磁盘读写速度可以通过DD 、fio等工具判断,这里我提供的时fio的判断方式

fio -filename=/data1/linuxcool -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=8k -size=10G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

最终结果主要关心iops和每秒读写

网络

网络需要确认的就是网络带宽,有两个部分1、服务器网卡速率. 2、交换机带宽

1、ethtool 网卡 可以查看速率

2、lspci -vvv | grep -i ethernet  10-Gigabit 是万兆  Gigabit 是千兆

交换机需要和客户确认,最终网络带宽以两项中的最小速率为准。

内存需要收集的就是内存大小,通过free -g top都可以查看这里就不过多讲解

在了解了服务器各个硬件的整体情况之后,下一步就是如何判断数据库运行期间的资源瓶颈可能在哪里。

瓶颈判断

--cpu瓶颈判断方法

cpu判断是否有瓶颈可以通过 top 、htop 、mpstat

首先可以通过top 执行查看CPU整体的使用情况

%Cpu(s): 1.7 us, 1.3 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

关注点包括

us 普通用户cpu使用百分比

sy 系统用户cpu使用百分比

id 空闲cou百分比

wa 等待百分比

然后通过通过 top 1 或者htop 查看各个processor 的使用情况如下。 查看指标和top类似

如果发现有个别processor 使用率不正常,可以使用mpstat查看

[kingbase@localhost bin]$ mpstat -P 0 2 4
Linux 3.10.0-862.el7.x86_64 (localhost.localdomain) 2023年06月16日 x86_64 (1 CPU)

11时27分31秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11时27分33秒 0 1.51 0.00 1.01 0.00 0.00 0.00 0.00 0.00 0.00 97.49
11时27分35秒 0 2.02 0.00 1.01 0.00 0.00 0.00 0.00 0.00 0.00 96.97
11时27分37秒 0 1.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.99
11时27分39秒 0 1.51 0.00 1.01 0.00 0.00 0.00 0.00 0.00 0.00 97.49
平均时间: 0 1.51 0.00 0.76 0.00 0.00 0.00 0.00 0.00 0.00 97.73

一般确认CPU存在问题的情况如下

1、us+sy使用率90%以上但是 wait占比超高95% ,说明cpu 队列中有严重的等待

2、sys使用超过了95%,数据库用户使用率只有5%不到,说明操作系统正在频繁的进行操作。严重损耗了COU资源

针对这些情况,我们下一步可以通过perf top 查看以下系统现在的热点函数,根据热点函数确认系统正在进行的操作,然后进行进一步优化。

--IO是否有瓶颈判断方法

IO判断指令也有很多,但是指标基本一样,这里以iostat为例

iostat -x 1   --每隔1秒钟打印IO情况

比较重要的参数分析指标:

• %util:io 的使用率,主要看是否已经接近或者超过 100%

如果%util 接近 100%,说明产生的 I/O 请求太多,I/O 系统已经满负荷,该磁盘可能存在瓶颈。

• svctm: 时间,主要说明磁盘本身的读写性能快慢,比如 tpcc 测试一般盘阵服务时间在 0.25ms 左右。如 果太大那就是磁盘性能问题,不过 CPU/内存的负荷也会对其有点影响。

• await: 主要说明平均每次 IO 响应时间,一般小于 5ms。

– 其中 svctm 一般要小于 await (因为等待时间会算入 svctm),await 的大小一般取决于服务时间 (svctm)

以及 I/O 队列的长度(avgqu-sz)和 I/O 请求的发出模式。

– 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;

– 如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢。

– 如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 IO 调度的

elevator 算法,优化应用,或者升级 CPU。

– 例如:对于 tpcc 一般采用 deadline 方式比较合适(IO 调度算法默认是 cfq)

针对机械盘建议采用 deadline 算法。

固态盘采用NOOP算法。

iotop指令可以看到当前操作系统有哪些线程再进行io操作,再iostat确认IO到瓶颈后,我们可以通过iotop查看具体的操作。

常用指令 :iotop -o

相同功能指令还有

pidstat -dl -U kingbase -p ALL 1

pidstat -d -l -p ALL 1 |grep kingbase

--网络情况分析方法

sar -n DEV 1 --查看网络传输速率等信息

sar -n EDEV 1  --查看网络传输失败情况

主要分析:

• 查看 rxbyt/s 和 txbyt/s 的收发字节数是否已经达到了瓶颈。需要注意的是,网络的性能取决于源端和目 的端以及中间设备(网线、路由器、交换机等)的整体表现。例如:源端和目的端都是千兆网卡,但是 它们之间的交换机为百兆,则两端的网络传输上限只能是百兆。为了更准确的了解网络性能的真实表 现,可以通过 scp 或者 iperf 来做测试。

--内存瓶颈分析方法

在操作系统层面 我们主要分析是否是用到了swap

常用指令top

主要分析:

• swap 是否被使用,如果使用了那就会拖累性能,消耗 cpu 和 io 时间。 例如:测试 tpcc 时有几个 g 的 swap 使用,导致峰值上不去,然后调整了 shared_buffers,变小 一些, 然后就不用交换分区了,然后峰值就上去了。原因是一些临时的数据可能比较多的情 况,然后放不下内存就用了交换分区。

• 空闲内存是否比较少,一般来说如果空闲内存/物理内存 >70%,内存性能优,如果小于 20%,则性能 差,需要添加内存。

• 如果内存用的很少,查询比较慢, 而且数据量很大,并且很多 io,那可以考虑调大 shared_buffers, 提高 命中率。

数据库层面给也有相关视图

针对命中率的视图可以查看

全局对象的sys_stdio_user_tables和 sys_stdio_user_indexes

如果确认了慢sql可以查看 sys_stat_statements

这里主要以介绍操作系统层面性能问题查看方法为主,数据库层面如何排查性能问题将会在后续文章中整理

标签:操作系统,查看,瓶颈,0.00,排查,内存,磁盘,kingbaseES,CPU
From: https://www.cnblogs.com/kingbase/p/17561104.html

相关文章

  • kingbaseES 优化之数据库瓶颈排查
    针对数据库的性能瓶颈排查方法分为两个层次1、实例级别性能问题排查2、语句级别性能问题排查实例级别实例级别性能问题排查用来分析数据库实例整体是否存在性能瓶颈,然后根据排除出的疑似问题进行实例级别参数的优化。使用场景包括1、压测场景下数据库整体优化2、上线之前数......
  • kingbaseES V8R3集群运维案例之---集群部署前后ssh端口修改
    kingbaseESV8R3集群运维案例之---集群部署前后ssh端口修改案例说明:kingbaseESV8R3集群部署读写分离的集群是使用ssh的默认端口(22)部署,当改为非默认端口时,在部署中或部署后会因kingbasecluster脚本ssh的连接而失败,现提出以下解决方案。适用版本:KingbaseESV8R31......
  • KingbaseES V8R6运维案例之---数据库resetwal后启动失败
    KingbaseESV8R6运维案例之---数据库resetwal后启动失败案例说明:KingbaseESV8R6集群触发failover切换后,原主库自动recovery失败,现在需要将原主库启动为单实例的数据库运行,在执行了resetwal后,启动数据库失败。sys_log记录以下故障信息:适用版本:KingbaseESV8R6......
  • KingbaseES V8R6集群运维案例之---访问系统表unrecognized token- false故障
    KingbaseESV8R6集群运维案例之---访问系统表‘unrecognizedtoken:"false"’故障案例说明:KingbaseESV8R6集群在升级补丁后,主备库访问系统表出现‘unrecognizedtoken:"false"’故障,如下图所示:适用版本:KingbaseESV8R3/R6一、问题分析1、连接数据库执行系统表访问(如......
  • KingbaseES V8R6集群运维案例--cluster模式备份sys_backup.sh init故障
    KingbaseESV8R6集群运维案例--cluster模式备份sys_backup.shinit故障案例说明:通过脚本方式部署KingbaseESV8R6集群后,在‘cluster’模式备份,执行sys_backup.shinit时,出现“cannotcontain//for”log-path"option"错误,但是在‘single’模式下备份,无此错误。故障信息......
  • KingbaseES V8R6集群运维案例之---修改ssh端口后脚本创建互信
    案例分析:在KingbaseESV8R6集群部署时,需要建立节点之间ssh互信(或者使用securecmdd工具),在有的生产环境,为了安全起见会修改ssh的默认端口;KingbaseESV8R6集群部署提供了脚本用于创建ssh互信,如果修改了系统的ssh端口号后,也需要修改对应的脚本。适用版本:KingbaseESV8R6一、集群节......
  • 深入理解操作系统中进程与线程的区别及切换机制(上)
    进程所谓进程,大家可以理解为我们打开的应用程序,如微信、QQ、游戏等,但也有系统应用是我们看不见的,可以打开任务管理器一探究竟,我们写的代码程序在服务器上在不运行的情况下,它就是一个二进制文件,并不是进程!一个进程可以包含一个或者多个线程,但对于CPU来说他就是一个任务而已;在早......
  • 深入理解操作系统中进程与线程的区别及切换机制(下)
    前言上一篇文章中我们了解了进程的执行方式,包括早期单核处理器上的顺序执行以及引入多任务概念实现的伪并行。我们还探讨了进程的状态模型。进程可以处于就绪、运行、阻塞和结束等不同的状态。在本篇文章中,我将探讨研究进程的状态模型、控制结构和切换机制。希望通过这篇文章的分......
  • KingbaseESV8R6汉字首字母排序
    目的本文目的实现汉字首字母排序。排序规则和字符集的关系如下。selectsys_encoding_to_char(collencoding)asencoding,collname,collcollate,collctypefromsys_collation;按照UTF8字符集匹配中文排序规则如下。selectcollcollatefromsys_collationwheresys_encod......
  • KingbaseESV8R6普通用户无权限执行vacuum
    背景数据库日志有如下提示:WARNING:skipping"pivot_t1"---onlytableordatabaseownercanvacuumit从提示可以看出,有用户对表pivot_t1进行vacuum操作时,出现了权限问题。测试TEST=#\c-ud;Youarenowconnectedtodatabase"TEST"asuser"ud".TEST=>TEST=&g......