onstat 运维常见统计命令

onstat 运维常见统计命令

onstat 命令读取共享内存结构,并提供有关数据库服务器在该命令执行时的统计信息。onstat命令不在共享内存上放置任何锁,因此运行该命令不会影响数据库性能。

1.监控实例状态(onstat -)

onstat -命令显示数据库实例的当前状态,正常情况数据库应处于On-Line模式,如以下输出:

GBase Database Server Version 12.10.FC4G1AEE -- On-Line -- Up 00:11:54 -- 833360 Kbytes

On-Line -- Up 00:00:35 -- 336528 Kbytes

如出现以下输出,则该数据库实例未启动或已关闭,需使用 gserver start 启动

shared memory not initialized for GBASEDBTSERVER 'gbase01'

具体输出格式解释如下:

Version--Mode (Type)--(Checkpnt)--Up Uptime--Sh_mem Kbytes

输出说明:

参数名说明格式
Version产品版本字符
Mode当前数据库运行模式,可能包括以下几种模式,数据库正常对外提供服务应为On-Line模式 Initialization 实例启动过程 Shutting Down 实例关闭过程 Quiescent 静默模式,数据库不可连接 On-Line 多用户模式,数据库正常运行状态模式 Fast Recovery 数据库启动或故障恢复过程 Single-User 管理员单用户模式字符
(Type)如果数据库为高可用集群,该处显示为主节点(Prim)或辅节点(Sec) ,如果数据库不是高可用集群,此处不显示字符
(Checkpnt)检查点标志,可能会显示以下两个值 (CKPT REQ) 数据库服务器需要执行检查点 (CKPT INP) 数据库服务器正在执行检查点字符
Uptime数据库启动以来运行的时间字符
Sh_mem数据库服务器使用共享内存的大小十进制数字

2.监控空间(onstat -d)

onstat -d命令用于检查数据库空间的使用情况,重点需要关注是否存在空间chunk down的情况:

检查是否存在空间down不可用的情况:

gstat -d |grep PD

检查空间使用情况:

gstat -d

要具体统计各空间的详细使用情况,建议使用SMI监控中的相关sql监控。

onstat -d示例输出:

On-Line -- Up 00:04:26 -- 336528 Kbytes

Dbspaces
address          number   flags      fchunk   nchunks  pgsize   flags    owner    name
44fba028         1        0x70001    1        1        2048     N  BA    gbasedbt rootdbs
450f1328         2        0x70001    2        1        2048     N  BA    gbasedbt plogdbs
450f1558         3        0x60001    3        1        2048     N  BA    gbasedbt llogdbs
450f1788         4        0x42001    4        1        16384    N TBA    gbasedbt tempdbs01
450f19b8         5        0x68001    5        1        2048     N SBA    gbasedbt sbspace01
450f1be8         6        0x60001    6        1        16384    N  BA    gbasedbt datadbs01
 6 active, 2047 maximum

Chunks
address          chunk/dbs     offset     size       free       bpages     flags pathname
44fba258         1      1      0          350000     332935                PO-B-- /data/gbase/rootchk
460c0028         2      2      0          256000     5947                  PO-B-- /data/gbase/plogchk
460c1028         3      3      0          256000     5947                  PO-B-- /data/gbase/llogchk
460c2028         4      4      0          6400       6347                  PO-B-- /data/gbase/tempchk01
46109028         5      5      0          51200      47678      47678      POSB-- /data/gbase/sbspace01
                                 Metadata 3469       2581       3469
4610a028         6      6      0          12800      12205                 PO-B-- /data/gbase/datachk01
 6 active, 32766 maximum

NOTE: The values in the "size" and "free" columns for DBspace chunks are
      displayed in terms of "pgsize" of the DBspace to which they belong.


Expanded chunk capacity mode: always

以下为onstat -d输出解释:

第一部分输出为空间信息:

列名说明格式
address共享内存中存储的空间地址十进制数字
number空间唯一标志号十进制数字
flags0x0001不允许镜像且数据库空间上未镜像的 0x0002允许镜像且数据库空间上未镜像的 0x0004允许镜像且数据库空间上镜像的 0x0008 新镜像的 0x0010 Blob空间 0x0200 正在恢复空间 0x0400 空间已完全恢复 0x0800 正在恢复逻辑日志 0x2000 临时空间 0x4000 正在备份的Blob空间 0x8000 智能大对象空间 0x10000 物理或逻辑日志已更改 0x20000 数据库空间或块表已更改 0x040000 包含大块的Blob空间 0x080000 有重命名Chunk的空间 0x00100000 SDS备机上SDS_TEMPDBS参数指定的SDS专用的临时空间 0x00200000 SDS备机上参数DBSPACETEMP指定的临时空间 0x00400000 执行了外部备份的数据库空间 0x00800000 空间正在进行碎片整理 0x01000000 物理日志空间十六进制数字
fchunk数据库空间中的主chunk十进制数字
nchunks数据库空间的chunk数量十进制数字
pagesize数据库空间的页大小十进制数字
flagsPosition 1: M 镜像 N 未镜像 Position 2: X 新镜像 D Down,不可用chunk P 物理恢复完成,等待逻辑恢复 L 正在逻辑恢复 R 正在恢复 Position 3: B BLOB空间 P 物理日志空间 S 智能大对象空间 T 临时空间 U 临时智能大对象空间 W SDS主节点的临时空间,只在SDS备节点显示 Position 4: B 空间可包含大于2G的chunk Position 5: A 空间自动扩展字符
owner空间属主字符
name空间名字符

3.监控逻辑日志(onstat -l)

onstat -l命令用于监控物理日志及逻辑日志的使用情况,需关注已使用的逻辑日志是否及时备份。

如以下命令检查是否存在未备份的逻辑日志:

gstat -l |grep "U--" |grep -v C

如没有输出,则所有逻辑日志已正常备份,如有输出,表示存在未及时备份的逻辑日志,需要及时备份,避免因逻辑日志未及时备份导致数据库挂起。

以下为onstat -l输出的flags列标志说明:

标志说明格式
A------日志文件已添加且可用,但尚未使用字符
D------如果您删除具有状态U-B的日志文件,那么它会标记为已删除。该日志文件被删除,其空间得以释放,可在您为所有存储空间进行0级备份时重新使用。字符
F------日志文件是空闲的且可供使用。逻辑日志文件在备份后得以释放,逻辑日志文件中的所有事务均关闭,存储在该文件中的最旧更新将会清仓到磁盘字符
U日志文件已使用但尚未备份。字符
U-B----日志文件已备份但仍是恢复所需。(当恢复不再需要该日志文件时就释放)字符
U—C数据库服务器当前正在填充日志文件。字符
U—C-L当前日志文件包含最近检查点记录。字符

4.监控运行信息(onstat -p)

onstat -p命令用于监控数据库运行以来数据库各指标的统计情况。

onstat -p

如以下示例输出:

On-Line -- Up 1 days 15:40:15 -- 857260 Kbytes

Profile
dskreads   pagreads   bufreads   %cached dskwrits   pagwrits   bufwrits   %cached
4991       9808       1011086    99.52   14709      18053      93931      84.34  

isamtot    open     start      read       write      rewrite    delete     commit     rollbk
1082785    116872   123376     369966     17752      14036      2693       10794      0

gp_read    gp_write   gp_rewrt   gp_del     gp_alloc   gp_free    gp_curs   
0          0          0          0          0          0          0         

ovlock     ovuserthread ovbuff     usercpu  syscpu   numckpts   flushes   
0          0            0          11.78    18.31    26         52        

bufwaits   lokwaits   lockreqs   deadlks    dltouts    ckpwaits   compress   seqscans  
114        0          770920     0          0          0          2074       2911      

ixda-RA    idx-RA     da-RA      logrec-RA  RA-pgsused lchwaits  
0          1534       1388       2          1383       2       
gstat –p命令输出的第一部分描述读取和写入。

- %cached(bufreads)

%cached值衡量从缓冲区的读取数与从磁盘的读取数之比,即读取共享内存相对于磁盘读取之比。其值通过公式“100 *(bufreads- dskreads)/ bufreads”获取。若此值偏低表示缓冲区配置太少,正常值应该大于95%。

- %cached(bufwrits)

%cached值衡量写入缓冲区的数量与写入磁盘的数量之比,即共享内存相对于磁盘写入百分比。此值一般应大于80%,然而,低百分比值缓存的写入可能只是表明,没有多少实际写入发生。LRU和CKPTINVL影响本写入百分比值。

gstat –p命令输出的第二部分显示已执行不同类 ISAM (索引顺序访问方法,Indexed Sequential Access Methed)调用的次数的制表。这些调用发生在操作的最底层,并且不必与 SQL 语句一对一对应执行。单个查询可能产生多个 ISAM 调用。这些统计信息通过数据库服务器产生并且不能用来监视单个数据库上的活动,除非只有一个数据库是活动的或只存在一个数据库。

- isamtot

显示调用ISAM的总数,表明服务器如何的繁忙。

- open

ISAM打开tblspace的次数。

- start

ISAM增加索引中的指数。

- read

ISAM读取调用的数量(select)。

- write

ISAM写入调用的数量(insert)。

- rewrite

ISAM更新调用的数量(update)。

- delete

ISAM删除调用的数量(delete)。

- commit & rollbk

回滚和提交之间的比例应小于1%,否则需要检查应用程序,看看为什么有很多的回滚。

gstat -p 命令输出的第三部分显示有关一般页的信息。一般页管理提供一个 API 让 GBase 8s 来管理数据库服务器缓冲池中的非标准页。以下描述了 gstat -p 命令输出中的 Generic Page Manager 。

gstat -p 命令输出的第四部分显示了请求资源时没有可用资源的次数。

- ovlock

超过locks次数的值。

- ovuserthread

当userthreads最大数量超过相对于nettype设置增量。

- ovbuff

数据库服务器无法找到可用共享内存缓冲区的次数。从缓冲池(buffer pool)中请求缓冲区(buffer)的次数,但是没有空的缓冲区。

以上信息显示被要求提供资源时,没资源可供使用的次数。

- usercpu & syscpu

所有用户线程使用的用户CPU和系统CPU时间,(以秒为单位)。这两条目每15秒更新一次。用户的时间应始终明显高于系统时间,如果没有,需检查操作系统。

- numckpts

从开机时间起累积的检查点数目。如果高得离谱,通过使用gstat -g ckp打印历史记录和配置建议信息,寻找检查点发生的原因。

- flushes

缓冲池已被刷新到磁盘的次数。次数并非均是由检查点来驱动的。

gstat -p 命令输出的第五部分包含杂项信息。

- bufwaits

每次用户线程必须等待缓冲区时增加,即用户线程数等待缓冲区的次数 (从缓冲池中)。如果过多或页面被刷新到磁盘过于频繁(LRU_MIN设置为0),可以表明某个单一的页面被修改多次。

依赖(Dependency):RA_PAGES,RA_THRESHOLD,LRUS,在BUFFERPOOL缓冲区。
效率(Efficiency):Bufwaits比率=(bufwaits/(bufwrits+ pagreads))*100%。

- lokwaits & lockreqs

lokwaits是每次用户线程必须等待锁时增加, lockreqs是每次请求锁时增加。锁请求(lock request)的次数用于锁定表/页/行。如果之间lokwaits/ lockreqs比例> 1%,那么应用程序可能单线程;若lokwaits值大需检查隔离级别。

- deadlks

每次检测到潜在死锁并阻止时增加。这个会显示遇到潜在的死锁的一些情况,如果> 10,需要审查应用程序。

- dltouts

每次用户线程等待锁时已超过分布式死锁超时时增加。此量增加是当分布式死锁(distributed lock)超时(time out) 标准已经达到,而用户线程正在等待锁。

- ckpwaits

Checkpoint 等待数。一个线程使检查点必须等待发生的次数,然后再继续。如果userthread中的一个关键部分中间(critical section),检查点是不能发生。

- compress

每次压缩数据页时增加。递增时,DELETE的动作使数据页中发生行数减少而某一数据页被压缩。压缩实际上是在页面上重新定位其余的行,这样使其余的行连续。

- seqscans

对每个顺序扫描增加,即对已发生的顺序扫描的数量。如果seqscans和isamtot之间比大于1%,请检查索引的使用。SeqScanRatio=(seqscans/ isamtot)*100.00。

gstat -p 命令输出的最后一部分关于预读页和预读阈值等信息。

- ixda-RA

索引页到数据页的预先读取计数。

- idx-RA

遍历索引页的预先读取计数。

- da-RA

仅数据路径扫描的计数。

- logrec-RA

数据库服务器预先读取的日志记录。

- RA-pgsused

数据库服务器预先读取所使用的页数。

有需要时从磁盘扫描多个连续页面,预读(Read aheads)让系统执行更高效的I/O。若预计页太多,可能读进了不需要的数据页,而占去太多缓冲区。此时高速缓冲区等待(bufwaits)也可能表明预计页和预计阈值之间的差异太小。

- lchwaits

存储线程需要等待共享存储锁存器的次数。大的锁存器等待数通常是由大量处理活动引起,数据库服务器正在此活动中记录大多数事务。

递增时用户线程必须等待获取共享内存资源(闩锁),大值表示工作量繁重的事务。

5.监控日志(onstat -m)

查看online日志的最新信息。在输出信息中,也包含了online日志的路径信息,可以根据该日志路径,查看online日志的完整内容。

onstat -m输出数据库日志文件路径及最后20行日志,需要重点关注日志中是否出现assert、err、fail关键字。

如以下命令检查日志文件最后一万行是否存在错误:

gstat -c MSGPATH |awk '{print "tail -10000 " $1}' |sh |egrep -i 'assert|err|fail'

6.监控配置参数(onstat -c)

onstat -c输出数据库参数配置文件 $GBASEDBTDIR/etc/ONCONFIG。

如以下命令检查数据库配置参数LTAPEDEV:

gstat -c LTAPEDEV

7.监控实例监听(onstat -g ntt)

onstat -g ntt输出当前实例监听IP端口及session连接信息。

onstat -g ntt示例输出:

On-Line -- Up 00:31:12 -- 336528 Kbytes

global network information:
  #netscb connects         read        write    q-free  q-limits  q-exceed alloc/max
   2/   2        0            0            0    0/   0  135/  10    0/   0    0/  -1

Individual thread network information (times):
          netscb thread name    sid     open     read    write address
        45a2fb90 soctcplst        3 15:06:39                   192.168.249.130|9088|soctcp
        45a2bbe0 soctcppoll       2 15:06:39
       

输出说明:

以soctcp结尾的行,显示当前实例的监听IP及端口,以上输出表示监听IP为192.168.249.130,端口为9088,如无此行输出,则数据库实例未正常启动监听。

8.监控备份情况(onstat -g arc)

onstat -g arc检查数据库备份情况,根据输出的备份信息检查数据库是否及时备份。

onstat -g arc示例输出:

On-Line -- Up 00:17:38 -- 833360 Kbytes


num   DBSpace            Q Size Q Len  Buffer partnum    size     scanner 

Dbspaces - Archive Status
name               number level date             log        log-position
rootdbs            1      0     07/28/2020.10:04 7          0x25ed018 
                          1     07/27/2020.18:00 7          0x7c1018  
                          2     07/28/2020.06:00 7          0x180e018 
plogdbs            2      0     07/28/2020.10:04 7          0x25ed018 
                          1     07/27/2020.18:00 7          0x7c1018  
                          2     07/28/2020.06:00 7          0x180e018 
llogdbs            3      0     07/28/2020.10:04 7          0x25ed018 
                          1     07/27/2020.18:00 7          0x7c1018  
                          2     07/28/2020.06:00 7          0x180e018 
sbspace01          5      0     07/28/2020.10:04 7          0x25ed018 
datadbs01          6      0     07/28/2020.10:04 7          0x25ed018

onstat -g arc输出解释:

列名说明格式
name空间名称字符
number空间编号十进制数字
level备份的级别,可能值为0、1、2十进制数字
date备份时间字符
log记录备份的逻辑日志十进制数字
log-position记录备份的逻辑日志位置十六进制数字

9.监控正在运行的sql(onstat -g sql)

onstat -g sql检查数据库正在运行的sql,要检查某个session正在运行的sql,可使用onstat -g sql 检查某个会话正在运行的sql语句。

onstat -g sql示例输出:

On-Line -- Up 00:26:18 -- 833360 Kbytes


Sess       SQL            Current            Iso Lock       SQL  ISAM F.E. 
Id         Stmt type      Database           Lvl Mode       ERR  ERR  Vers  Explain    
26                        sysadmin           DR  Wait 5     0    0    -     Off        
25                        sysadmin           DR  Wait 5     0    0    -     Off        
24                        sysadmin           DR  Wait 5     0    0    -     Off        
23                        sysadmin           CR  Not Wait   0    0    -     Off        

输出解释:

列名说明格式
Sess IDsession ID十进制数字
SQL Stmt type当前执行的sql类型,可能为select、update、delete等字符
Current Database当前连接的数据库字符
Iso Lvl会话使用的隔离级别 DR Dirty Read CR Committed Read CS Cursor Stability RR Repeatable Read LC Committed Read Last Committed字符
Lock Mode锁等待时间字符
SQL ERR出错的错误号十进制数字
ISAM ERR出错的ISAM号十进制数字
F.E. Verssqli协议版本字符
Explain是否打开执行计划,可能为on、off字符

10.监控所有实例配置(onstat -g dis)

onstat -g dis检查本台服务器上配置的所有数据库实例,显示实例的配置文件及运行状况。

onstat -g dis示例输出:

On-Line -- Up 00:00:54 -- 336528 Kbytes
There are 1 servers found
Server        : gbase01
Server Number : 1
Server Type   : IDS
Server Status : Up
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR   : /opt/gbase
ONCONFIG      : /opt/gbase/etc/onconfig.gbase01
SQLHOSTS      : /opt/gbase/etc/sqlhosts.gbase01
Host          : node01

11.监控服务器配置(onstat -g osi)

onstat -g osi检查本台服务器的操作系统资源配置情况。

onstat -g osi示例输出:

On-Line -- Up 01:15:50 -- 336528 Kbytes

Machine Configuration....
OS Name                                 Linux
OS Release                              3.10.0-957.el7.x86_64
OS Node Name                            node01
OS Version                              #1 SMP Thu Nov 8 23:39:32 UTC 2018
OS Machine                              x86_64
Number of processors                    2
Number of online processors             2
System memory page size                 4096 bytes
System memory                           3771 MB
System free memory                      3262 MB
Number of open files per process        1024
shmmax                                  9223372036854775807
shmmin                                  1
shmids                                  4096
shmNumSegs                              9223372036854775807
semmap                                  <<  UnSupported  >>
semids                                  128
semnum                                  32000
semundo                                 <<  UnSupported  >>
semNumPerID                             250
semops                                  32
semUndoPerProc                          <<  UnSupported  >>
semUndoSize                             20
semMaxValue                             32767

12.监控实例进程(onstat -g glo)

数据库的一个VP在操作系统中是一个oninit进程,onstat -g glo输出当前实例的所有VP信息,可通过pid列与操作系统进程号对应,在多实例环境下,可检查哪些进程为当前实例的进程,如果需要kill进程,可有效避免误杀了别的实例的oninit进程。

onstat -g glo示例输出:

GBase Database Server Version 12.10.FC4G1AEE -- On-Line -- Up 00:26:56 -- 833360 Kbytes

MT global info:
sessions threads  vps      lngspins time    
0        40       19       1        1616    

          sched calls     thread switches yield 0   yield n   yield forever
total:    93435           62497           31867     24025     14324    
per sec:  48              46              2         43        0        

Virtual processor summary:
 class       vps       usercpu   syscpu    total   
 cpu         1         2.08      1.02      3.10    
 aio         12        0.09      3.12      3.21    
 lio         1         0.01      0.10      0.11    
 pio         1         0.01      0.03      0.04    
 adm         1         0.04      0.09      0.13    
 soc         1         0.43      0.55      0.98    
 msc         1         0.00      0.00      0.00    
 fifo        1         0.00      0.01      0.01    
 total       19        2.66      4.92      7.58    

Individual virtual processors:
 vp    pid       class       usercpu   syscpu    total     Thread    Eff  
 1     19858     cpu         2.08      1.02      3.10      14.60     21%
 2     19861     adm         0.04      0.09      0.13      0.00       0%
 3     19862     lio         0.01      0.10      0.11      0.85      12%
 4     19864     pio         0.01      0.03      0.04      0.08      50%
 5     19866     aio         0.06      1.60      1.66      17.54      9%
 6     19869     msc         0.00      0.00      0.00      0.01       0%
 7     19872     fifo        0.00      0.01      0.01      0.01     100%
 8     19874     soc         0.43      0.55      0.98      NA         NA
 9     19875     aio         0.02      1.30      1.32      15.48      8%
 10    19876     aio         0.00      0.05      0.05      0.54       9%
 11    19878     aio         0.00      0.01      0.01      0.03      34%
 12    19879     aio         0.00      0.02      0.02      0.03      70%
 13    19880     aio         0.01      0.03      0.04      0.04     100%
 14    19881     aio         0.00      0.01      0.01      0.01     100%
 15    19882     aio         0.00      0.01      0.01      0.01     100%
 16    19884     aio         0.00      0.02      0.02      0.02     100%
 17    19886     aio         0.00      0.02      0.02      0.02     100%
 18    19887     aio         0.00      0.02      0.02      0.02     100%
 19    19889     aio         0.00      0.03      0.03      0.03     100%
                 tot         2.66      4.92      7.58     

13.监控实例内存(onstat -g seg)

onstat -g seg输出当前实例的所有共享内存段的信息。

onstat -g seg示例输出:

GBase Database Server Version 12.10.FC4G1AEE -- On-Line -- Up 00:27:13 -- 833360 Kbytes

Segment Summary:
id         key        addr             size             ovhd     class blkused  blkfree 
589824     52564801   44000000         14401536         601928   R     3516     0       
622593     52564802   44dbc000         393216000        4609704  V     80338    15662   
655362     52564803   5c4bc000         113287168        1        B     27658    0       
688131     52564804   630c6000         332455936        1        B     81166    0       
Total:     -          -                853360640        -        -     192678   15662   

   (* segment locked in memory)
No reserve memory is allocated

输出说明:

列名说明格式
id共享内存段在系统中的id号,与操作系统命令ipcs -m的输出的shmid对应十进制
key通过SERVERNUM计算出来的内存段键值十进制
addr内存段在内存中的地址十六进制
size内存段大小,单位为字节十进制
ovhd跟踪该内存段的页头大小十进制
class内存段的类型,包括以下类型: R 常驻段 V 虚拟段 B 缓冲池 M 消息段字符
blkused已用blk数,blk在linux上为4kDec
blkfree未使用blk数,blk在linux上为4kDec

14.监控队列情况(onstat -g rea)

onstat -g rea检查数据库队列情况,正常情况如数据库服务器配置能满足当前业务压力需求,不会出现队列。

onstat -g rea示例输出:

On-Line -- Up 00:25:42 -- 833360 Kbytes

Ready threads:
 tid     tcb              rstcb            prty status                vp-class       name

类似以上输出表示数据库没有等待队列,数据库运行无压力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值