Linux下,实际的增量并不大,但英方数据同步产生大量缓存数据的原因探究
发表于 2019-03-22
点击数 2557

症状:


下图为使用英方6.0-12790保护数据的实时流量图案例,其文件是某第三方开发的软件(Tomcat+Java)处理而来的。由图中右上角可见,磁盘缓存为 1.02GB,单实际同样的时间点,监控目录下只有一个12Mb大小的文件产生,差别太大。


问题:

使用i2Coopy保护第三方软件写入的数据时,实际新增文件大小与英方软件看到的大小不一致,应该如何解释?


解决方案:


一、解释说明
英方软件属于内核态,捕获到的数据是应用程序与操作系统之间交互的所有I/O写入,对于频繁的小I/O,英方的处理方式是,每一个I/O处理为4KB数据包进行传输。因此,当英方看到的大小与源端实际增量差别较大时,一般与第三方软件写数据的方式有直接关系,如果是大量小I/O的写入设计,会出现传输量与文件增量不一致的情况。

二、排查方法
在生产端,执行如下检查操作:
1、查看磁盘挂载情况
             df -h
2、查看目前磁盘数据量
             iostat -m 
3、查看变化的是哪些文件
             lsof | grep 复制路径  
4、再次查看当前磁盘数据量,结合步骤1、对比步骤2得出变化的文件大小
             iostat -m 

 分析方法举例:


5、查看文件准确的变化量
              repset -Q perdbg
              debugctl work task 规则uuid


如上图所示,增量数据产生后,不传输,直接写缓存。

6、CDP辅助
还可以针对监控目录,在控制台对应的规则中勾选开启CDP,使用CDP功能进行辅助排查,更加清楚和明了捕获到的每一次I/O操作是什么,大小是多大,从而判断是什么原因导致的产生不正常的缓存。如下图所示,可见所举案例的每次 I/O只有1字节 写入,即使一个很小的文件,也会产生大量的I/O。这样的写入方式,不用英方时,机器的负载就已经非常吃力,系统性能被拉得很低。
综上所述,应用程序开发得好与不好,英方还能作为一个很好的验证工具。


三、处理办法

1、可自行修改文件处理软件的文件写入方式;

2、若没有条件或能力修改软件代码,可使用英方的一致性比较工具做定时备份,可达到分钟级容灾备份;
3、待英方后续版本对小I/O捕获的处理方式进行优化。


相关文章
上一篇:
下一篇:

及时响应,快速服务,为您保驾续航

立即注册

请先完成图形验证

验  证  码:

请先完成图形验证

验  证  码:

隐私声明
当您在本网站进行合作伙伴注册登记,本网站将收集您的相关信息,并保存记录。本网站收集的个人信息包括但不限于:姓名、地址、公司、所在地区、电话号码以及电子邮件地址等。您主动提供的信息越多及越准确,我们就能够更好地为您提供有关服务。
咨询·购买