症状:
下图为使用英方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捕获的处理方式进行优化。
及时响应,快速服务,为您保驾续航
立即注册