1 CPU
通过top命令查看openGauss内节点CPU使用情况,分析是否存在由于CPU负载过高导致的性能瓶颈。
执行top命令,查看CPU占用情况。执行该命令后,按“1”键,可查看每个CPU核的使用率。
top - 10:11:33 up 20 days, 15:53, 3 users, load average: 0.57, 1.00, 0.93
Tasks: 299 total, 2 running, 297 sleeping, 0 stopped, 0 zombie
%Cpu0 : 1.1 us, 3.3 sy, 0.0 ni, 95.2 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st
%Cpu1 : 2.8 us, 4.6 sy, 0.0 ni, 92.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 7.0 us, 4.5 sy, 0.0 ni, 88.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 1.5 us, 0.8 sy, 0.0 ni, 97.0 id, 0.8 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7814152 total, 3098876 free, 2462588 used, 2252688 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2730476 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3551 omm 20 0 1581984 32116 5192 S 18.9 0.4 2624:03 cm_agent
3572 omm 20 0 6434440 485040 6688 S 15.3 6.2 2243:40 cm_server
13106 omm 20 0 7930264 1.8g 1.4g S 9.6 24.7 1495:38 gaussdb
28724 omm 20 0 44576 11612 2292 S 1.3 0.1 248:58.06 om_monitor
1942 gdm 20 0 783792 11292 1760 S 0.7 0.1 73:24.24 gsd-color
431 root 20 0 0 0 0 S 0.3 0.0 8:26.25 xfsaild/dm-0
22782 dmdba 20 0 432668 22816 1428 S 0.3 0.3 29:28.50 dmmonitor
25355 root 20 0 0 0 0 S 0.3 0.0 0:00.07 kworker/u8:0
25576 gdm 20 0 717128 9644 1784 S 0.3 0.1 34:52.69 gsd-color
32534 oracle 20 0 730588 11356 1900 S 0.3 0.1 72:30.99 gsd-color
1 root 20 0 191548 3932 1988 S 0.0 0.1 9:20.02 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.44 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 18:27.45 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:34.10 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 33:26.82 rcu_sched
……
因为openGauss是单进程多线程架构,如果要查看线程信息,使用:top -H 。
2 内存
在top命令中,按“Shift+M”键,可按照内存大小排序。
我这里执行的是top -H:
top - 10:18:22 up 20 days, 16:00, 4 users, load average: 0.94, 1.02, 0.95
Threads: 925 total, 4 running, 921 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.3 us, 3.2 sy, 0.0 ni, 93.1 id, 0.2 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 7814152 total, 3080308 free, 2469316 used, 2264528 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2713716 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13106 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 4:24.03 gaussdb
13107 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 jemalloc_bg_thd
13120 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 gaussdb
13121 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:40.15 syslogger
13122 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 jemalloc_bg_thd
13123 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 2:13.17 alarm
13124 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:02.16 reaper
13125 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 jemalloc_bg_thd
13126 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 jemalloc_bg_thd
13150 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 gaussdb
13151 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 gaussdb
13152 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:00.00 gaussdb
13164 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 6:21.90 checkpointer
13166 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:28.45 Spbgwriter
13168 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 0:10.31 CBMwriter
13170 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 12:59.93 pagewriter
13172 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 17:10.60 pagewriter
13173 omm 20 0 7930264 1.8g 1.4g S 0.3 24.7 17:04.51 pagewriter
13174 omm 20 0 7930264 1.8g 1.4g S 1.0 24.7 150:17.30 pagewriter
13175 omm 20 0 7930264 1.8g 1.4g S 0.0 24.7 16:51.03 pagewriter
……
可以结合free 命令查看:
[omm@oracle bin]$ free -g
total used free shared buff/cache available
Mem: 7 2 2 1 2 2
Swap: 0 0 0
[omm@oracle bin]$
3 I/O
通过iostat、pidstat查看openGauss节点I/O繁忙度和吞吐量,分析是否存在由于I/O导致的性能瓶颈。
使用iostat命令查看I/O情况。“rMB/s”为每秒读取的MB数,“wMB/s”为每秒写入的MB数,“%util”为硬盘使用率。
[dave@www.cndba.cn bin]$ iostat -xm 1 //1为间隔时间
Linux 3.10.0-1160.el7.x86_64 (oracle) 2023年04月28日 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
3.27 0.00 3.41 0.14 0.00 93.19
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.28 0.86 31.14 0.04 0.25 18.47 0.06 1.90 2.78 1.87 1.51 4.83
dm-0 0.00 0.00 0.85 23.46 0.04 0.25 24.30 0.06 2.63 2.83 2.62 1.99 4.83
dm-1 0.00 0.00 0.02 0.02 0.00 0.00 8.08 0.00 3.77 0.15 7.06 0.10 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
4.17 0.00 3.89 0.00 0.00 91.94
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 4.00 0.00 0.02 11.00 0.00 1.00 0.00 1.00 1.00 0.40
dm-0 0.00 0.00 0.00 3.00 0.00 0.02 14.67 0.00 1.33 0.00 1.33 1.33 0.40
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
3.53 0.00 3.26 0.54 0.00 92.66
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 46.53 0.00 0.41 17.87 0.08 1.64 0.00 1.64 1.66 7.72
dm-0 0.00 0.00 0.00 36.63 0.00 0.41 22.89 0.08 2.08 0.00 2.08 2.11 7.72
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
使用pidstat命令查看I/O情况。“kB_rd/s”为每秒读取的kB数,“kB_wr/s”为每秒写入的kB数。
[omm@oracle bin]$ pidstat -d 1 10 //1为采样间隔时间,10为采样次数
Linux 3.10.0-1160.el7.x86_64 (oracle) 2023年04月28日 _x86_64_ (4 CPU)
10时27分31秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
10时27分32秒 54322 3551 0.00 15.69 15.69 cm_agent
10时27分32秒 54322 3572 0.00 15.20 0.00 cm_server
10时27分32秒 54322 13106 0.00 3.92 0.00 gaussdb
10时27分32秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
10时27分33秒 54322 3551 0.00 16.00 16.00 cm_agent
10时27分33秒 54322 3572 0.00 364.00 0.00 cm_server
10时27分33秒 54322 13106 0.00 344.00 0.00 gaussdb
10时27分33秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
10时27分34秒 54322 3551 0.00 16.00 16.00 cm_agent
10时27分34秒 54322 3572 0.00 100.00 0.00 cm_server
10时27分34秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
10时27分35秒 54322 3551 0.00 16.00 16.00 cm_agent
10时27分35秒 54322 3572 0.00 16.00 0.00 cm_server
……
若I/O持续过高,建议尝试以下方式降低I/O。
- 降低并发数。
- 对查询相关表做VACUUM FULL。
openGauss VACUUM 说明
https://www.cndba.cn/dave/article/116557
4 网络
通过sar或ifconfig命令查看openGauss内节点网络使用情况。
[dave@www.cndba.cn bin]$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.57.105 netmask 255.255.255.0 broadcast 192.168.57.255
inet6 fe80::a871:bf7b:91d2:74e0 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:ad:04:0b txqueuelen 1000 (Ethernet)
RX packets 622482 bytes 102787926 (98.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 483026 bytes 80431046 (76.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
“errors”表示收包错误的总数量。
“dropped”表示数据包已经进入了Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃的总数量。
“overruns”表示Ring Buffer队列中被丢弃的报文数目,由于Ring Buffer(aka Driver Queue)传输的IO大于openGauss能够处理的IO导致。
分析时,如果发现上述三个值持续增长,则表示网络负载过大或者存在网卡、内存等硬件故障。
[dave@www.cndba.cn bin]$ sar -n DEV 1 //1为间隔时间
Linux 3.10.0-1160.el7.x86_64 (oracle) 2023年04月28日 _x86_64_ (4 CPU)
10时45分57秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10时45分58秒 enp0s3 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时45分58秒 enp0s8 74.00 59.00 12.67 10.41 0.00 0.00 0.00
10时45分58秒 lo 24.00 24.00 7.46 7.46 0.00 0.00 0.00
10时45分58秒 virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
10时45分58秒 virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
……
“rxkB/s”为每秒接收的kB数,“txkB/s”为每秒发送的kB数。主要关注每个网卡的传输量和是否达到传输上限。
版权声明:本文为博主原创文章,未经博主允许不得转载。