生产环境全链路压测-影子库落地

标签: | 发表时间:2022-01-03 21:03 | 作者:
出处:https://xie.infoq.cn

背景


在项目落地初期,大家都在询问影子库要怎么建,如果 double 一份会不会有浪费,这种情况还是需要按需来准备。先举一个例子:

示例:某企业数据库使用 365 万,如果上生产环境全链路压测的话,需要再采购 365 万的硬件,真这么做可能 owner 这个事情的部门要跳起来了,原因是成本过高。当然如果是土豪部门可以忽略



解决方案


我们的解决方案是预估出系统现有的容量情况,识别出业务热点表、配置表、日志表。将日志表剥离,业务热点表考虑存储部分天数的数据,从而达到扩磁盘,不扩机器的目的。


关于业务热点表

业务热点表是业务核心的操作表,写入和查询较多,也是压测的热点表,对于此类型的表需要能做到控制保存天数,例如核心业务表保存 3 个月,3 个月后统一转存到冷备库中。而压测中需要配置的影子库中的表,如果在资源不足的情况下,适当的控制保存天数,例如压测表中保存 1 个月诸如此类。


关于配置表

配置表多为保存一些配置信息,例如商品信息、商家信息,在电商领域通常是店小二操作的表,此类型表多为查询多,写入更新少,数据条目少,可以全量导入到影子库中。


关于操作日志类表

大家都知道日志表中,会把操作的流水写入到日志表中,日积月累这种数据量会越来越多,但是我们在生产环境压测过程中是不需要的。



这个图例中使用查看了 mysql 中的 t_performance_thread_stack_data 表,它的索引大小是 1.16G,数据大小是 9 个 G,7 千万条记录,这种单表 7 千万条记录的情况,对于数据库中单个表的体积本来就是非常不合理的。再看下这个里面用的功能,记录调试业务过程中的记录数据,就业务功能来说需要存储这么多数据,可以考虑做一个水平切分,将数据库中的数据切分到多张表中,例如每月一张表、每周一张表。


下面是查询数据库中表空间体积的 sql:

mysql:

oracle:



数据收集模板

数据库的存储的体积



细化到数据表的体积



与业务部门讨论:

在数据库摸底收集模板产出之后,DBA 和业务研发同学清楚目前数据库的容量情况,讨论具体影子库使用的这种方案。这里有个大前提,尽可能的模拟生产环境的数据量以及索引情况,尽可能将影子库存储在业务库的同一个库中。

相关 [生产 环境 影子] 推荐:

生产环境全链路压测-影子库落地

- -
在项目落地初期,大家都在询问影子库要怎么建,如果 double 一份会不会有浪费,这种情况还是需要按需来准备. 示例:某企业数据库使用 365 万,如果上生产环境全链路压测的话,需要再采购 365 万的硬件,真这么做可能 owner 这个事情的部门要跳起来了,原因是成本过高. 我们的解决方案是预估出系统现有的容量情况,识别出业务热点表、配置表、日志表.

在生产环境运行容器

- - IT瘾-tuicool
【编者的话】Vivek Juneja是一名工作首尔的云服务工程师. 他从2008年就开始接触云服务,是最早的AWS和Eucalyptus的使用者. 本文中总结了在生产环境中使用容器的几个方面,特别是对虚拟机与容器的混合部署的观点很值得推荐给大家. 如果只是把容器限制在开发测试环境中,那么您并没有享受到面向容器研发和发布工作的全部红利.

MySQL生产环境突发故障处理手册

- gOODiDEA - MySQL OPS
1.2 碎片整理和统计信息更新 OPTIMIZE 操作等于recreate + analyze 的组合操作,所以会堵塞更新类型SQL语句. 对于备机上跑只读类型操作的业务,可以考虑使用此操作命令,对于主服务器不建议使用此命令,为此备机上执行OPTIMIZE 语句,必须这样写: [...].

生产环境 MySQL 表的维护:check、optimize和analyze

- - CSDN博客数据库推荐文章
        optimize可以回收空间、减少碎片、提高I/O.         目前支持的存储引擎有:InnoDB、MyASIM和ARCHIVE.         如果是Replication环境、可加NO_WRITE_TO_BINLOG(或者LOCAL、意思完全相同)、比如:.         以下是一个简单测试:.

[MySQL] 生产环境MySQL数据库事务一直在RUNNING

- - CSDN博客数据库推荐文章
运营人员反映,有一单子提交卡住了,页面一直没有返回. 1,刚开始怀疑是应用服务器或者db压力过高hang住了,马上去check应用服务器以及db的负载,看起来都OK,蛮低的,应该不是DB性能问题. 2,最后去看下是否是表锁住了,查看到有2个事务一直RUNNING,没有结束. 3,通过trx_mysql_thread_id: 1662332的去查询information_schema.processlist找到执行事务的客户端请求的SQL线程.

[原]BTrace介绍和生产环境例子

- - Vern的专栏
BTrace 是一个可靠的,用来动态跟踪Java程序的工具. 它通过动态对运行中的Java程序进行字节码生成来工作. BTrace会对运行中的Java程序的类插入一些跟踪操作 来对被跟踪的程序进行热替换. 探测点 (Probe Point). 就是一系列的跟踪语句被执行的“地方”或者“事件”. 探测点就是我们想要执行一些跟踪语句的地方或者事件.

virgo-tomcat-server的生产环境线上配置与管理 - 520_1351

- - 博客园_首页
Virgo Tomcat Server简称VTS,VTS是一个应用服务器,它是轻量级, 模块化, 基于OSGi系统. 与OSGi紧密结合并且可以开发bundles形式的Spring web apps应用. 他们同样拥有OSGi和Spring的特性. VTS由SpringSource 的Spring DM server过渡而来, virgo官网地址: http://www.eclipse.org/virgo.

生产环境下JAVA进程高CPU占用故障排查

- - 开源软件 - ITeye博客
生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 1,程序属于CPU密集型,和开发沟通过,排除此类情况. 2,程序代码有问题,出现死循环,可能性极大. 1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出.

生产环境用Docker?先搞定这8个常见故障

- - DockOne.io
维护生产环境中的Docker虚拟化应用,高效、稳定的运行至关重要. 但是,对于Docker的初学者而言,当容器或应用出现了问题,往往不知从何入手进行排查. Docker虚拟化主要有三类故障:. 应用故障:应用执行状态与预期不一致. 容器故障:无法正确创建、停止、更新容器等. 集群故障:集群创建失败、更新失败、无法连接等.

生产环境中的Kubernetes最佳实践

- - DockOne.io
2020年,12月1日 Pavan Belagatti. DevOps从提出到现在,已经走过了一段很长的路. 包括Docker和Kubernetes在内的多种平台也已经帮助企业用前所未有的速度实现了软件应用的交付. 同时,随着应用的容器化构建和发布比率不断上升,作为事实上的容器编排工具,Kubernetes在企业用户中备受欢迎和广泛认可.