数据库检查点异常故障的检查及处理

检查方法:

为了保证数据的一致性,数据库采用检查点(checkpoint)机制将内存中的脏页刷新到磁盘中,同时清空旧的物理日志。数据库在执行checkpoint操作时,会阻塞访问临界区,从而导致数据库的SQL操作都无法执行。如果执行checkpoint操作的时间过长,则会导致checkpoint时间内的呼叫无法接通,从而导致限呼,严重时会导致虚假话务浪涌的现象。

处理方法:

checkpoint的性能主要与数据库的配置相关,具体包括如下配置项。

BUFFERS

BUFFERS是共享内存的主要配置参数。BUFFERS的值越大,则数据库读写的命中率就会越高,系统的整体性能也会提高,但数据库checkpoint的时间也会越长。BUFFERS的大小一般为内存大小的1/4,如果内存空间足够大,可以保证checkpoint的时间足够长,则该参数设置得越大越好。

LRUS

LRUS队列的多少直接影响Informix数据库磁盘的写性能。LRUS的值越大,则LRU队列的长度就会越小,checkpoint时间也会越短,各应用进程(包括oninit进程)占用系统的时间也会越少。建议将该参数配置为32。

LRU_MAX_DIRTY/LRU_MIN_DIRTY

该参数为脏页在所有页面中所占的最大/最小比例,其大小直接影响Informix数据库的写命中率。LRU_MAX_DIRTY/LRU_MIN_DIRTY的值越大,则写命中率就会越大,系统性能也会提高,但数据库checkpoint的时间却会成比例地急剧上升。该参数与系统磁盘的IO性能相关,建议配置为2/1。

CLEANERS

CLEANERS为cleaner线程的数量。当内存中脏页的数量达到最大比例(BUFFERS×LRU_MAX_DIRTY%)时,数据库就会启动cleaner线程将缓冲池中的脏页写到硬盘中;当内存中脏页的数量达到最小比例(BUFFERS×LRU_MIN_DIRTY%)时,cleaner线程就会停止工作。

cleaner线程越多,脏页就会越及时地刷新到磁盘,而当数据库checkpoint时需要刷新的脏页也就越少,相应的checkpoint时间就越短。通常,如果磁盘数目和数据库空间数目较多,则要求CLEANERS配置的值较大些(一个chunk至少配置一个cleaner线程),但CLEANERS配置的值太大也会稍稍降低系统性能。

CHKPTINTVL

该参数影响checkpoint的频率。如果问题原因是checkpoint的频率太大,则可以考虑调整执行的时间间隔。但是,调整该参数后,数据库HDR恢复时需要同步的逻辑日志会增多,从而影响数据库恢复的时间。

PHYSFILE

物理日志的大小也会影响checkpoint的频率,当物理日志文件的大小达到75%时,数据库就会执行checkpoint。如果通过执行onstat命令查出是物理日志文件被快速写满导致文件大小达到75%,则可以考虑增加物理日志的大小。

通常,如果现网需要调整checkpoint的时间,则需要注意协调好上述参数的均衡,不能仅仅调整一个参数。有时,磁盘的读写性能也会影响checkpoint的时间。例如数据空间如果建立在内置磁盘上,由于内置磁盘通常不做raid,所以其读写性能低于外置磁盘,这可能会导致checkpoint的时间过长。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181220B05YDT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券