houhuaw 发表于 2011-09-12 23:55

求教:检查点执行时间间隔大于onconfig文件CKPTINTVL参数的值

本帖最后由 houhuaw 于 2011-09-12 23:58 编辑

onconfig文件中CKPTINTVL设定为300s,可实际检查点间隔时间大部份为10分钟,也有少部分是5分钟的,但没有超过10分钟间隔仍旧不执行的。
比如上一个检查点执行时间是00:00:00
在00:05:00执行onstat -R显示大部份都是0 dirty(这台机子业务量很大,不可能不更新数据库,confonfig LRU配置为:BUFFERPOOL      size=2K,buffers=500000,lrus=32,lru_min_dirty=0.390000,lru_max_dirty=0.780000):

> onstat -R显示:
IBM Informix Dynamic Server Version 11.10.FC2   -- On-Line -- Up 168 days 10:22:38 -- 1375204 Kbytes
Buffer pool page size: 2048
...
0 dirty, 500000 queued, 500000 total, 524288 hash buckets, 2048 buffer size
start clean at   0.780% (of pair total) dirty, or 122 buffs dirty, stop at
   0.390%
大部份情况下过了5分钟后才会出现lru buffer中dirty不为0的情况,大部份情况为19 dirty。

>onstat -F显示:
IBM Informix Dynamic Server Version 11.10.FC2   -- On-Line -- Up 168 days 10:17:55 -- 1375204 Kbytes
Fg Writes   LRU Writes    Chunk Writes
0             1368228       1572810      

> onstat -p显示:
IBM Informix Dynamic Server Version 11.10.FC2   -- On-Line -- Up 168 days 10:20:47 -- 1375204 Kbytes
Profile
dskreads   pagreads   bufreads   %cached dskwrits   pagwrits   bufwrits   %cached
3903022    1311165765343564559 99.95   3411397    9564319    83376312   95.93
isamtot    open       start      read       write      rewrite    delete   commit   rollbk
6153942905 1254088258899402161475748619 18939770   139680   14628607   626166   2
gp_read    gp_write   gp_rewrt   gp_del   gp_alloc   gp_free    gp_curs   
0          0          0          0          0          0          0         
ovlock   ovuserthread ovbuff   usercpusyscpu   numckpts   flushes   
0          0            0          88531.03 29910.57 27426      27929   
bufwaits   lokwaits   lockreqs   deadlks    dltouts    ckpwaits   compress   seqscans
29885      0          2750105435 0          0          749      1811164    2038837   
ixda-RA    idx-RA   da-RA      RA-pgsused lchwaits
338      0          134146   134484   640484682

liaosnet 发表于 2011-09-13 00:35

回复 1# houhuaw


    onstat -g ckp看最近20个检查点的详细情况。。

houhuaw 发表于 2011-09-13 15:34

本帖最后由 houhuaw 于 2011-09-13 15:56 编辑

> onstat -g ckp                                                                                                                              
                                                                                                                                             
IBM Informix Dynamic Server Version 11.10.FC2 -- On-Line -- Up 169 days 01:59:21 -- 1375204 Kbytes                                       
                                                                                                                                          
AUTO_CKPTS=On   RTO_SERVER_RESTART=Off                                                                                                   
                                                                                                                                          
                                                                Critical Sections                        Physical Log    Logical Log   
                Clock                                                 Total Flush Block #      CkptWaitLong# Dirty   DskfluTotal    Avg    Total    Avg   
Interval    Time      Trigger         LSN                Time TimeTime Waits TimeTimeTimeBuffers   /Sec    Pages    /Sec   Pages    /Sec
37955      13:00:01 *User         273:0x35f03c   0.0   0.0   0.0   1      0.0   0.0    0.0   0         0         0      0          1      0   
37956      13:05:14CKPTINTVL273:0x3620180.0   0.0   0.0   0      0.0   0.0   0.0    19          19         19       0          3      0   
37957      13:15:14CKPTINTVL273:0x3650180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0          3      0   
37958      13:25:15CKPTINTVL273:0x36f018   0.0   0.0   0.0   0      0.0    0.0    0.0    43          43         42       0         10       0   
37959      13:35:16CKPTINTVL273:0x3720180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37960      13:45:16CKPTINTVL273:0x3750180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37961      13:55:17CKPTINTVL273:0x3780180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37962      14:05:19CKPTINTVL273:0x37b0180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37963      14:15:20CKPTINTVL273:0x37e6f8   0.0   0.0   0.0   0      0.0    0.0    0.0    25          25         25       0         3      0   
37964      14:20:20CKPTINTVL273:0x4816640.0   0.0   0.0   0      0.0    0.0    0.0    203      203       88       0         259    0   
37965      14:25:21CKPTINTVL273:0x4b40180.0   0.0   0.0   0      0.0    0.0    0.0    80          80         77       0         51      0   
37966      14:35:22CKPTINTVL273:0x5bb0180.0   0.0   0.0   0      0.0    0.0    0.0    194      194       79       0         263    0   
37967      14:45:23CKPTINTVL273:0x5be0180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37968      14:50:23CKPTINTVL273:0x5bf608   0.0   0.0   0.0   0      0.0    0.0    0.0    6            6         7         0         1      0   
37969      14:55:24CKPTINTVL273:0x5c25e40.0   0.0   0.0   0      0.0    0.0   0.0    25         25         25       0         3      0   
37970      15:00:24CKPTINTVL273:0x5c32400.0   0.0   0.0   0      0.0    0.0   0.0    2         2         0         0         1      0   
37971      15:05:25CKPTINTVL273:0x5c60180.0   0.0   0.0   0      0.0    0.0   0.0    19         19         19       0         3      0   
37972      15:15:26CKPTINTVL273:0x5c95e40.0   0.0   0.0   0      0.0    0.0   0.0    25         25         25       0         3      0   
37973      15:20:26CKPTINTVL273:0x5ca6080.0   0.0   0.0   0      0.0    0.0   0.0    6         6         7         0         1      0   
37974      15:25:26CKPTINTVL273:0x5d20180.0   0.0   0.0   0      0.0    0.0   0.0    36      36         35       0         8      0   
                                                                                                                                             
Max Plog         Max Llog       Max Dskflush   Avg Dskflush   Avg Dirty      Blocked                                                            
pages/sec      pages/sec      Time               pages/sec       pages/sec      Time                                                               
8450            6008               0                  1                     0                   0

3sane 发表于 2011-09-13 17:01

回复 1# houhuaw


    要命的CHECKPOINT,为了不影响运行,优先级还是比较低,而且有CHK_REQ这种状态,如果你想了解到底怎么做,加上TRACECKPT环境变量,不要过要重启生效,结果好像在ONLINE.LOG里,好久没有用了。

liaosnet 发表于 2011-09-14 00:22

> onstat -g ckp                                                                                    ...
houhuaw 发表于 2011-09-13 15:34 http://bbs.chinaunix.net/images/common/back.gif


    有的是5分钟,有的是10分钟,可能在10分钟内并没有update/insert操作(或者说明使用了buffered log的库,更新并没有刷回磁盘),故数据库认为这个ckptinteval内数据库没有改变,等到下一个ckptinteval才做检查点。。

houhuaw 发表于 2011-09-14 11:21

有几十台这样的机子,onconfig配置都是一模一样的,数据库表结构也都是一模一样的,数据库操作也具有同质性,但却有几台出现了这样的问题,其他的都是5分钟正常执行,所用的库是with buffered log。
"3sane” 兄CHK_REQ是什么状态啊,可否指点一二。
以下是以前打开XTRACE跟踪的结果:
Component          Feature         File          Line    Pid   Time Stampcsvr thrd      trans rstcbsession MESSAGE
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 00:42:31 1   0    8    8c392028 8c351028 1 need_to_ckpt() intvl 14071 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008
.......................
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 00:42:31 1   0    8    8c392028 8c351028 1 need_to_ckpt() intvl 14071 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c142131705 00:46:17 470    8    8c392028 8c351028 1 checkpoint start - intvl 14071 phyused 17 physize 500000
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c148031705 00:46:17 480    8    8c392028 8c351028 1 checkpoint active
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c155331705 00:46:17 490    8    8c392028 8c351028 1 prev intvl 14070 cur intvl 14071 phypos 85327 logpos 128:de77018 cp_dbsoffset 4cp_chkoffset 6 cp_mchkoffset 8
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c159831705 00:46:17 500    8    8c392028 8c351028 1 checkpoint normal broadcast
XTF_FLUSHER       XTF_DEBUGrsflush.c   647   31705 00:46:17 510    8    8c392028 8c351028 1 dskflush(0 1 14071)
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c166131705 00:46:17 520    8    8c392028 8c351028 1 dskflush over 0 phyused 17
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c170031705 00:46:17 530    8    8c392028 8c351028 1 write reserved pages
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c215331705 00:46:17 540    8    8c392028 8c351028 1 ckptwrite() 1:2
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c182431705 00:46:17 550    8    8c392028 8c351028 1 ckpt done time_between 602 run_time 0 plogs/S 0 llogs/S 0 phyused 0 blockflags 0
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c142131705 00:51:17 560    8    8c392028 8c351028 1 checkpoint start - intvl 14072 phyused 0 physize 500000
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 00:52:32 570    8    8c392028 8c351028 1 need_to_ckpt() intvl 14072 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008
.....................
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c142131705 00:56:17 103 0    8    8c392028 8c351028 1 checkpoint start - intvl 14072 phyused 17 physize 500000
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c148031705 00:56:17 104 0    8    8c392028 8c351028 1 checkpoint active
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c155331705 00:56:17 105 0    8    8c392028 8c351028 1 prev intvl 14071 cur intvl 14072 phypos 85344 logpos 128:de7a018 cp_dbsoffset 4cp_chkoffset 7 cp_mchkoffset 8
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c159831705 00:56:17 106 0    8    8c392028 8c351028 1 checkpoint normal broadcast
XTF_FLUSHER       XTF_DEBUGrsflush.c   647   31705 00:56:17 107 0    8    8c392028 8c351028 1 dskflush(0 1 14072)
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c166131705 00:56:17 108 0    8    8c392028 8c351028 1 dskflush over 0 phyused 17
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c170031705 00:56:17 109 0    8    8c392028 8c351028 1 write reserved pages
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c215331705 00:56:17 110 0    8    8c392028 8c351028 1 ckptwrite() 1:3
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c182431705 00:56:17 111 0    8    8c392028 8c351028 1 ckpt done time_between 600 run_time 0 plogs/S 0 llogs/S 0 phyused 0 blockflags 0
XTF_FLUSHER       XTF_DEBUGrsflush.c   647    31705 01:00:01 112 0    50   8c3957c8 8c35ba20 13dskflush(0 1 0)
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c142131705 01:00:01 113 0    8    8c392028 8c351028 1 checkpoint start - intvl 14073 phyused 0 physize 500000
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c148031705 01:00:01 114 0    8    8c392028 8c351028 1 checkpoint active
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c155331705 01:00:01 115 0    8    8c392028 8c351028 1 prev intvl 14072 cur intvl 14073 phypos 85344 logpos 128:de7b03c cp_dbsoffset 4cp_chkoffset 7 cp_mchkoffset 8
XTF_FLUSHER      XTF_DEBUGrsflush.c647    31705 01:00:01 116 0    8    8c392028 8c351028 1 dskflush(0 1 14073)
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c166131705 01:00:01 117 0    8    8c392028 8c351028 1 dskflush over 0 phyused 0
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c170031705 01:00:01 118 0    8    8c392028 8c351028 1 write reserved pages
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c215331705 01:00:01 119 0    8    8c392028 8c351028 1 ckptwrite() 1:2
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c182431705 01:00:01 120 0    8    8c392028 8c351028 1 ckpt done time_between 224 run_time 0 plogs/S 0 llogs/S 0 phyused 0 blockflags 0
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 01:02:32 121 0    8    8c392028 8c351028 1 need_to_ckpt() intvl 14074 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 01:02:37 122 0    8    8c392028 8c351028 1 need_to_ckpt() intvl 14074 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008
..............................
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 01:05:17 154 0    8    8c392028 8c351028 1 need_to_ckpt() intvl 14074 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c142131705 01:05:17 155 0    8    8c392028 8c351028 1 checkpoint start - intvl 14074 phyused 17 physize 500000
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c148031705 01:05:17 156 0    8    8c392028 8c351028 1 checkpoint active
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c155331705 01:05:17 157 0    8    8c392028 8c351028 1 prev intvl 14073 cur intvl 14074 phypos 85361 logpos 128:de7e018 cp_dbsoffset 4cp_chkoffset 6 cp_mchkoffset 8
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c159831705 01:05:17 158 0    8    8c392028 8c351028 1 checkpoint normal broadcast
XTF_FLUSHER       XTF_DEBUGrsflush.c   647    31705 01:05:17 159 0    8    8c392028 8c351028 1 dskflush(0 1 14074)
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c166131705 01:05:17 160 0    8    8c392028 8c351028 1 dskflush over 0 phyused 17
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c170031705 01:05:17 161 0    8    8c392028 8c351028 1 write reserved pages
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c215331705 01:05:17 162 0    8    8c392028 8c351028 1 ckptwrite() 1:3
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c182431705 01:05:17 163 0    8    8c392028 8c351028 1 ckpt done time_between 316 run_time 0 plogs/S 0 llogs/S 0 phyused 0 blockflags 0
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c142131705 01:10:17 164 0    8    8c392028 8c351028 1 checkpoint start - intvl 14075 phyused 0 physize 500000
XTF_CHECKPOINT XTF_DEBUGrsrecvr.c633331705 01:12:32 165 0    8    8c392028 8c351028 1 need_to_ckpt() intvl 14075 phyused 17 n_dirty_buffs 17 dskflush_per_sec 1000 plogs_per_sec 8450 llogs_per_sec 6008

3sane 发表于 2011-09-14 16:36

回复 6# houhuaw


    CHK_REQ也许我拼错了,就是等待做CHECKPOINT,这会延迟CHECKPOINT的执行时间,看起来间隔就长了。从LOG里看还真有PHYLOG为0 used的情况,回头看,你设的LRU_MIN很小,所以都被LRU清理掉了。而且修改量不是太大,留给CHECKPOINT做的事情就不多了。
   另外建议你尽快升级数据库版本,不要用11.10或11.20的版本。

houhuaw 发表于 2011-09-14 17:11

回复 7# 3sane


    "就是等待做CHECKPOINT,这会延迟CHECKPOINT的执行时间",CHECKPOINT不是到了CKPTINTVL间隔的时间或者其他事件触发的吗,这个是否等待做CHECKPOINT在什么地方可以设置?请指教

   "PHYLOG为0 used“,phyused 0指的是LRU的buffer 0个为dirty的吧。为啥5分钟之内不往LRU里面写东西呢?不可能没有修改数据库记录的操作吧,其他业务量小得多的或者没有承载业务在那里空转的机子都 按时执行了检查点,这台机子没有承载业务之前就出现了这个情况。其他机子没有承载业务之前也是按时执行检查点。

   "你设的LRU_MIN很小,所以都被LRU清理掉了",有几十台这样的机子,配置都一样,就这几台出现了这个问题。所以我很迷惑。

houhuaw 发表于 2011-09-14 17:17

回复 5# liaosnet


    "可能在10分钟内并没有update/insert操作(或者说明使用了buffered log的库,更新并没有刷回磁盘),故数据库认为这个ckptinteval内数据库没有改变,等到下一个ckptinteval才做检查点"
   有几十台从数据库本身配置看来一样的机子,在没有承载业务之前都是按时执行检查点的,这台机子没有承载业务之前就出现了这个问题,承载业务后问题依旧。没有承载业务就是说:主机和磁阵启动状态,数据库Online状态,但没有什么东东来更改数据库记录。

liaosnet 发表于 2011-09-14 17:34

回复 9# houhuaw


    从你的onstat -g ckp的输出上看
37960      13:45:16CKPTINTVL273:0x3750180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37961      13:55:17CKPTINTVL273:0x3780180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37962      14:05:19CKPTINTVL273:0x37b0180.0   0.0   0.0   0      0.0    0.0    0.0    19          19         19       0         3      0   
37963      14:15:20CKPTINTVL273:0x37e6f8   0.0   0.0   0.0   0      0.0    0.0    0.0    25          25         25       0         3      0   
37964      14:20:20CKPTINTVL273:0x4816640.0   0.0   0.0   0      0.0    0.0    0.0    203      203       88       0         259    0   
37965      14:25:21CKPTINTVL273:0x4b40180.0   0.0   0.0   0      0.0    0.0    0.0    80          80         77       0         51      0   

每次检查点间的逻辑日志量都非常少的。。就可能出现一段时间没有更新(或者更新在仍在缓存里),导致数据库认为没有变动的。。故不需要做检查点的。。
如37960 到 37961 之间的逻辑日志差为 0x378018   -0x375018 = 0x3000(12288) 字节,这其中还包括上次检查点的记录的量。。这个是非常小的。。
而37964 到 37965 之间的逻辑日志差为 0x4b4018   -0x481664 = 0x329B4(207284)字节,这个应该已经超过逻辑日志缓冲区的大小了,因此有提交,有改变,做了检查点。。


BTW:检查点是为了保证数据库一致的机制。。只要它做就好了。。。5分钟一次,10分钟一次并没有什么问题。。。
页: [1] 2
查看完整版本: 求教:检查点执行时间间隔大于onconfig文件CKPTINTVL参数的值