背景:使用 netstat -ano | grep ESTABLISH | grep 11883 监控 send_Q 和 recv_Q 的值,由于单次推送数据量在1w条以上,导致falcon-agent处理不过来,造成数据丢失,图形断点.

1,为什么 falcon 图形会断点?

有如下两条原因:

  • tcp 连接断开,导致当前监控点无数值。
  • 数据丢失,空白点位时间段数据未上传。

2,验证数据丢失

  • 机器上找一个长连接进行监控,并用脚本打点到日志文件,与 falcon 图形比对丢失点连接是否存在。经过实际验证,发现数据确实是 丢失 。
  • test.sh
  • 结果:

3,为什么数据会丢失?

  • 因为我们的连接数在 5k~1w 之间,
  • 每分钟取值,并打两个指标上去,
  • 也就是每分钟我们会推送 1w~2w 条数据到 falcon,

  • 单线程执行总花费时间 37s 左右,

  • 多线程执行总花费时间为 0s

一开始我们怀疑是单线程执行慢的原因,担心数据未完成插入,被丢弃,所以采用了拉长推送时间,改为每2/3/5分钟尝试,结果都是失败。

后来尝试改为多线程,但是问题依旧,后来经过讨论以及请教其它同事,怀疑是不是因为短时间内推送数据过多(根据同事提供历史单次推送在2000条,没有数据丢失问题),导致 falcon-agent 处理不过来,所以丢弃了部分数据。

于是在原基础上,对数据推送进行切割,分批次推送(500/List)+ 延时(20ms,避免多进程执行过快),控制数据推送总花费时间在 15s 以内,完美解决了此次数据丢失问题。


总结

原因: 短时间内推送数据量过大

解决办法: 分批次推送数据 + 延时

补充知识:

1⃣️send_Q与recv_Q代表什么?

https://stackoverflow.com/questions/36466744/use-of-recv-q-and-send-q?noredirect=1&lq=1
https://milestone-of-se.nesuke.com/sv-basic/linux-basic/ss-netstat/

2⃣️什么是tcp三次握手?

https://github.com/jawil/blog/issues/14

falcon 数据丢失处理方法参考的更多相关文章

  1. vim 乱码问题的方法参考

    linux 中设置当前用户的系统默认编码为 UTF-8 格式解决 vim 乱码问题的方法参考  任侠  2013-05-02 11:58  电脑基础  抢沙发  13,732 views  在使用 l ...

  2. 【转】warning C4819,该文件保存为 Unicode 格式以防止数据丢失,处理方法

    以下的解决方案只是把错误给屏蔽掉而已,并不能真正解决这个警告.仅供参考! 当项目引用到外部源代码后,经常出现4819错误,警告信息如下: warning C4819: 该文件包含不能在当前代码页(93 ...

  3. [总结]jQuery之常用函数方法参考手册

    w3school参考地址:http://www.w3school.com.cn/jquery/index.asp runoob参考地址:http://www.runoob.com/jquery/jqu ...

  4. 记录Javascript的数据方法参考

    concat >>连接2个或更多数组,并返回结果 var arr1 = [1,2,3]; var arr2 = [-1,-2,-3]; console.log(arr1.concat(ar ...

  5. HBuilder 详细使用方法 -------------参考 :http://www.runoob.com/w3cnote/hbuilder-intro.html

    HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开发IDE.HBuilder的编写用到了Java.C.Web和Ruby.HBuilder本身主体是由Java编写,它基于Ecl ...

  6. linux系统启动报错:[contains a file system with errors, check forced]的解决方法参考

    1.解决参考一Press enter for maintenance(or type Control-D to continue):/dev/sda3 contains a file system w ...

  7. List<T>集合导出csv方法参考,通过增加自定义的属性控制输出的字段。

    public string CreateAdvExcel(List<GridScoreManager> lt) { StringBuilder builder = new StringBu ...

  8. 成功案例分享:raid5两块硬盘掉线数据丢失恢复方法

    1. 故障描述    本案例是HP P2000的存储vmware exsi虚拟化平台,由RAID-5由10块lT硬盘组成,其中6号盘是热备盘,由于故障导致RAID-5磁盘阵列的两块盘掉线,表现为两块硬 ...

  9. Remove Element(第一种方法参考别人)

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

随机推荐

  1. IsNull、rs、sum

    <% 'response.write (IsNull(rs("month_finish_count_price"))) If IsNull(rs("month_fi ...

  2. Linux记录-批量更改当前目录的文件后缀名

    #!/bin/bash path=. for file in $(ls $path) do if [ -f $file ] then filename=${file%.*} bak=${file#*. ...

  3. 123457123456#2#----com.MC.ShiZi365--前拼后广--儿童识字Game-mc22222222222222222

    com.MC.ShiZi365--前拼后广--儿童识字Game-mc

  4. Python - Django - ORM 常用字段

    AutoField: int 自增列,必须填入参数 primary_key=True 如果没有写 AutoField,则会自动创建一个列名为 id 的列 from django.db import m ...

  5. UCloud云盘系统安装

  6. k8s、jenkins集成

    参考连接 http://www.uml.org.cn/jchgj/201804252.asp https://huanqiang.wang/2018/03/30/Jenkins-Gitlab-Kube ...

  7. 【Leetcode_easy】961. N-Repeated Element in Size 2N Array

    problem 961. N-Repeated Element in Size 2N Array solution: class Solution { public: int repeatedNTim ...

  8. logstash kafka output 日志处理

    今天在用logstash解析日志并传送给kafka的时候,发现kafka能收到数据但数据内容已经丢失,具体如下: 在logstash output中增加输出样式之后,问题解决kafka再次接受到的内容 ...

  9. linux 使用jar 打包成war

    把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c   创建war包 -v   显示过程信息 -f     -M -0   这个是阿拉伯数字,只打包不压缩 ...

  10. 对spring的简单了解

    对spring的简单了解 什么是spring Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的,同时Spring也是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 特点 ...