我是靠谱客的博主 聪明小刺猬,最近开发中收集的这篇文章主要介绍HDR整体性能分析-SinoDB,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       HDR是SinoDB集群套件中通过数据复制技术实现数据库级别高可用的方案,在各种关键核心业务系统应用广泛。本文收集了在实际应用中经验,对HDR整体性能提供分析的思路,希望对使用者有所帮助。

      首先分析一下HDR的工作过程:在主服务器端,每当有事务提交时,在将逻辑日志缓冲区(Logical Log Buffer)中的内容写到磁盘上之前,先将该缓冲区中的事务记录拷贝到数据复制缓冲区(HDR Buffer)中,然后再通过网络传送到备服务器上的Reception Buffer中。在备服务器一端,数据复制线索将Reception Buffer中的内容放入恢复缓冲区(Recovery Buffer)中,最后,由其他线索将这些事务记录恢复到数据库中。工作原理如下图所示:

       HDR的整体性能应包括主服务器、网络和备服务器的恢复性能,只要其中一个环节存在瓶颈,都会影响整体系统的性能。举个例子说明,如果HDR Buffer的内容不能及时传送到备服务器(由于HDR的配置参数、网络或备服务器的恢复性能等原因),就会阻塞Logical Log Buffer中的内容写到HDR Buffer,也会阻塞Logical Log Buffer中的内容写到逻辑日志文件,可通过onstat -l命令捕获到以下统计信息:

Buffer Waiting

Buffer  ioproc           flags           

  L-1   c0000000901feee8 0x1      0

  L-2   c0000000901fe6c0 0x1      0

       表明数据库日志记录在等待Logical Log Buffer的释放,造成数据库事务的阻塞,从而影响整体系统的性能。

       HDR的配置参数主要有DRINTERVAL、DRTIMEOUT和OFF_RECVRY_THREADS等,如果是单服务器运行将不会使用这些参数。其中DRINTERVAL是HDR Buffer刷新到备服务器的时间间隔(秒),建议设置为1,目的是尽量加快HDR Buffer的刷新,减少性能的瓶颈。OFF_RECVRY_THREADS是备服务器进行同步恢复的线程数(Recovery thread),该参数影响备服务器恢复事务的性能,我们应尽量使各个Recovery thread的负载达到均衡。 如果各个Recovery thread的负载不均衡,那么备服务器的资源利用率将较低,进一步将影响到主服务器的性能。可通过以下命令监控:

OFF_RECVRY_THREADS的值至少是CPU VPS的数目的3倍 (并且OFF_RECVRY_THREADS的值至少是11),数目最好是较大的质数,可根据实际的CPU VPS的数量进行调整。

还可以通过命令onstat -g ath监控HDR线程状态,获取HDR性能情况,例如监控到以下信息:

468     c000000031196b80 c000000011616df0 2    cond wait  drcb_bqe     7cpu         dr_secrcv

drcb_bqe状态说明HDR的接收线程一直在等HDR Buffer的清空释放,这样会阻碍主刷新log buffer的性能,说明HDR备服务器存在性能问题,需要检查系统I/O和网络的性能指标。

       从应用角度来看,应尽量避免操作大事务。因为HDR Buffer的大小有限,一个大事务要通过多次网络传输才能完成同步,这样会影响主机数据库的性能。例如在一些批处理的场景中,有批量插入的操作,举个例子每累计一万行提交一次,这时可将提交数量降低为一千行左右,HDR的性能会有明显的提升。

       另外,其他主要数据库参数也会对HDR的整体性能产生影响,例如,BUFFERS和LOGBUF等。其中BUFFERS是数据缓存区的大小,BUFFERS的值越大,数据的缓存率就越高,数据库的内存换页的次数就越少,IO的开销会降低,HDR的整体性能会相当稳定,逐渐接近单服务器的性能。在OLTP系统中,BUFFERS可调节到物理内存50%-70%。如果BUFFERS的值偏小,会频繁出现数据库的内存换页的现象,对HDR的整体性能产生波动,由于HDR涉及的环节较多,所以影响要比单服务器的较大。

       综合上述,HDR的整体性能需要通过以上各个关键参数进行优化组合,才能保持HDR整体性能的稳定性,缩小与单服务器的性能差距。

最后

以上就是聪明小刺猬为你收集整理的HDR整体性能分析-SinoDB的全部内容,希望文章能够帮你解决HDR整体性能分析-SinoDB所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部