绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
GaussDB T 性能调优——性能问题定位之实例分析
2020-03-17 13:46:42

摘要:本文介绍GaussDB T 数据库性能调优的示例分析。

1. CPU

通用top命令查看各节点CPU占用情况,分析是否存在由于CPU负载过高导致的性能瓶颈。

执行命令后按“1”键,可查看每个CPU核的使用率。分析时,请主要关注进程占用的CPU利用率。

top - 17:05:04 up 32 days, 20:34, 5 users, load average: 0.02, 0.02, 0.00
Tasks: 124 total, 1 running, 123 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 69.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.3%us, 0.3%sy, 0.0%ni, 69.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8038844k total, 7165272k used, 873572k free, 530444k bñffžrä
Swap: 4192924k total, 4920k used, 4188004k free, 4742904k cached
 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ 
COMMAND 
 
 32893 gaussdba 20 0 41416 1648 1196 S 10 0.0 23:46.14 
om_monitor 
 
 34874 gaussdba 20 0 169m 4104 1664 S 20 0.1 20:23.48 
cm_agent 
 
 35184 gaussdba 20 0 822m 421m 128m S 0 5.4 5:28.15 
gaussdb 
 
 1 root 20 0 13592 820 784 S 0 0.0 1:16.62 init

其中,“us”表示用户空间占用CPU百分比,“sy”表示内核空间占用CPU百分比,“id”表示空闲CPU百分比。

如果“id”低于10%,即表明CPU负载较高。如果CPU使用率过高,需要确定是由于数据库进程本身引起的还是操作系统中其他无关进程引起的。

2. 内存分析

通过top命令查看各节点内存使用情况,分析是否存在由于内存占用率过高导致的性能
瓶颈。

● 在所有存储节点,逐一使用root用户执行top命令,查看内存占用情况。执行该命
令后,按“Shift+M”键,可按照内存大小排序。

top - 11:27:04 up 23 days, 1:15, 4 users, load average: 1.43, 0.53, 0.56 
 Tasks: 437 total, 2 running, 435 sleeping, 0 stopped, 0 zombie 
 Cpu(s): 16.6%us, 2.2%sy, 0.0%ni, 80.7%id, 0.0%wa, 0.0%hi, 0.4%si, 0.0%st 
Mem: 96717M total, 23777M used, 72940M free, 69M buffers
 Swap: 16394M total, 9M used, 16385M free, 18177M cached 
 
 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
 1496 omm 20 0 9.9g 1.3g S 177 1.7 0:49.57 gaussdb 
 1490 omm 20 0 9.9g 1.6g 1.3g S 140 1.7 0:43.88 gaussdb 
 1493 omm 20 0 9.9g 1.6g 1.3g S 123 1.7 0:42.77 gaussdb
1499 omm 20 0 9.9g 1.6g 1.3g S 120 1.7 0:42.77 gaussdb 
 2111 omm 20 0 9917m 1.5g 1.3g S 0 1.6 0:01.95 gaussdb 
 2115 omm 20 0 9917m 1.5g 1.3g S 0 1.6 0:01.91 gaussdb 
 2123 omm 20 0 9917m 1.5g 1.3g S 0 1.6 0:01.91 gaussdb 
 2119 omm 20 0 9917m 1.5g 1.3g S 0 1.6 0:01.91 gaussdb 
 1508 omm 20 0 1527m 1.3g 1.0g S 0 1.4 0:02.36 gaussdb 
 1502 omm 20 0 1527m 1.3g 1.0g S 0 1.4 0:02.12 gaussdb 
 1505 omm 20 0 1527m 1.3g 1.0g S 0 1.4 0:02.29 gaussdb 
 1511 omm 20 0 1527m 1.3g 1.0g S 0 1.4 0:02.23 gaussdb 
 1487 omm 20 0 2499m 1.3g 1.1g S 0 1.4 0:01.95 gaussdb

分析时,请主要关注每个进程占用的内存百分比(%MEM)、整系统的剩余内存。

显示信息中的主要属性解释如下:
– total:物理内存总量。
– used:已使用的物理内存总量。
– free:空闲内存总量。
– bñffžrä:进程使用的虚拟内存总量。
– %MEM:进程占用的内存百分比。
– VIRT:进程使用的虚拟内存总量,VIRT=SWAP+RES。
– SWAP:进程使用的虚拟内存中已被换出到交换分区的量。
– RES:进程使用的虚拟内存中未被换出的量。
– SHR:共享内存大小。

3. I/O 分析

通过iostat、pidstat命令查看各节点I/O繁忙度和吞吐量,分析是否存在由于I/O导致的
性能瓶颈。

查询服务器I/O的方法主要有以下两种方式

● 使用iostat命令查看I/O情况。此命令主要关注单个硬盘的I/O使用率和每秒读取、
写入的数量。

iostat -xm 1 //1为间隔时间
 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await 
w_await svctm %util 
 sdc 0.01 519.62 2.35 44.10 0.31 2.17 109.66 0.68 14.62 2.80 15.25 
0.31 1.42 
 sdb 0.01 515.95 5.84 44.78 0.89 2.16 123.51 0.72 14.19 1.55 15.84 
0.31 1.55 
 sdd 0.02 519.93 2.36 43.91 0.32 2.17 110.16 0.65 14.12 2.58 14.74 
0.30 1.38 
 sde 0.02 520.26 2.34 45.17 0.31 2.18 107.46 0.80 16.86 2.92 17.58 
0.34 1.63 
 sda 12.07 15.72 3.97 5.01 0.07 0.08 34.11 0.28 30.64 10.11 46.92 0.98 
0.88

“rMB/s”为每秒读取的MB数,“wMB/s”为每秒写入的MB数,“%util”为硬盘使用率。

● 使用pidstat命令查看I/O情况。此命令主要关注单个进程每秒读取、写入的数量。

pidstat -d 1 10 //1为间隔时间,表示查看占用I/O多的0进程
 03:17:12 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 
 03:17:13 PM 1006 36134 0.00 59436.00 0.00 gaussdb 
 03:17:13 PM 1006 36137 0.00 73528.00 0.00 gaussdb 
 03:17:13 PM 1006 36140 4.00 39000.00 0.00 gaussdb 
 03:17:13 PM 1006 36143 0.00 57972.00 0.00 gaussdb 
 03:17:13 PM 1006 36743 0.00 54660.00 0.00 gaussdb 
 03:17:13 PM 1006 36747 0.00 66116.00 0.00 gaussdb 
 03:17:13 PM 1006 36751 0.00 61260.00 0.00 gaussdb 
 03:17:13 PM 1006 36755 0.00 69372.00 0.00 gaussdb

“kB_rd/s”为每秒读取的kB数,“kB_wr/s”为每秒写入的kB数。

4. 网络及进程分析

通过sar、²fcÑnfig命令查看各节点网络使用情况,分析是否存在由于网络导致的性能瓶
颈。

查询服务器网络状况的方法主要有以下两种方式:

● 使用root用户身份登录服务器,执行如下命令查看服务器网络连接。

SIA1000056771:~ # ifconfig
 eth0 Link encap:Ethernet HWaddr 28:6E:D4:86:7D:D5 
 inet addr:10.180.123.163 Bcast:10.180.123.255 Mask:255.255.254.0 
 inet6 addr: fe80::2a6e:d4ff:fe86:7dd5/64 Scope:Link 
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
 RX packets:5669314 errors:0 dropped:0 overruns:0 frame:0 
 TX packets:4955927 errors:0 dropped:0 overruns:0 carrier:0 
 collisions:0 txqueuelen:1000 
 RX bytes:508077795 (484.5 Mb) TX bytes:818004366 (780.1 Mb) 
 
 lo Link encap:Local Loopback 
 inet addr:127.0.0.1 Mask:255.0.0.0 
 inet6 addr: ::1/128 Scope:Host 
 UP LOOPBACK RUNNING MTU:16436 Metric:1 
 RX packets:711938 errors:0 dropped:0 overruns:0 frame:0 
 TX packets:711938 errors:0 dropped:0 overruns:0 carrier:0 
 collisions:0 txqueuelen:0 
 RX bytes:164158862 (156.5 Mb) TX bytes:164158862 (156.5 Mb)

– “errors”表示收包错误的总数量。

– “dropped”表示数据包已经进入了Ring Bñffžr,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃的总数量。

– “overruns”表示Ring Bñffžr队列中被丢弃的报文数目,由于Ring Buffer(aka Driver Queue)传输的IO大于kernel能够处理的IO导致。
分析时,如果发现上述三个值持续增长,则表示网络负载过大或者存在网卡、内存等硬件故障。

● 使用sar命令查看服务器网络连接。


sar -n DEV 1 //1为间隔时间
 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 
 Average: lo 1926.94 1926.94 25573.92 25573.92 0.00 0.00 0.00 0.00 
 Average: A1-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
 Average: A1-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
 Average: NIC0 5.17 1.48 0.44 0.92 0.00 0.00 0.00 0.00 
 Average: NIC1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
 Average: A0-0 8173.06 92420.66 97102.22 133305.09 0.00 0.00 0.00 0.00 
 Average: A0-1 11431.37 9373.06 156950.45 494.40 0.00 0.00 0.00 0.00 
 Average: B3-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 
 Average: B3-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

“rxkB/s”为每秒接收的kB数,“txkB/s”为每秒发送的kB数。

分析时,请主要关注每个网卡的传输量和是否达到传输上限。检查完后,按“Ctrl+Z”键退出查看。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~