zoukankan      html  css  js  c++  java
  • 分布式系统的DEBUG

    最近一段时间,项目从python2转为python3,并伴随的大量的功能重构,于是乎陷入了测试、找BUG、改BUG的循环中。老实说,吐了吐了。

    最新的一个BUG,是nmap扫描的问题。

    发出3000个IP nmap扫描的任务,最后只收到了不到100个IP有端口。

    测了一下,大部分ping不同。

    能ping通的再测一下,--min-parallelism设置得太高,同时节点发出大量数据包,可能导致网络拥堵收不到返回包。

    那么调用Nmap时 --min-parallelism调低一点,超时调高一点,跑到中间不继续往下跑了,print都没有了?

    原来是celery超时了。

    过程中,最麻烦的点

    一 分布式任务中,复现时无法确定发出的流量是哪个节点接收到了

    对于这种情况,要不停用其他节点留下一个节点;要不发出一批流量,挨个节点检测。

    为了避免是某个节点的环境出了问题,我选择了挨个检测。

    但这两种不管选什么,唉,都在半夜弄吧。毕竟白天扫描器要正常运行,晚上半夜流量少点,可以折腾。

    二 日志缺乏或者混乱

    之前python2版本的日志是比较完善的,但python3版本这一块功能做了一半,其中有的用Logging输出,有的用Print,有的重定向了输出(找了半天,我输出呢),苦不堪言。

    三 单个任务耗时长

    对于nmap或者其他扫描任务,可能是在调用nmap或者扫描时出了错,不能简单地用其他数据替换,所以老老实实跑。

    一批IP + nmap扫描,用时超过十分钟。

    每次调试,改插件设下print、改任务、重启扫描器(嗯,因为重构,任务这块还有bug,所以还得重启扫描器)、十几分钟过去了,再挨个节点检查一下,一轮下来半小时就过去了。

    整个过程不像正常debug一样,运行,看报错,运行,看报错;而是 改动、运行,过去半小时,检查结果。

    加一句调试信息,等半小时。

    四 该做什么

    找BUG心得,尽量 用最小的成本去复现BUG

    测试环境其实应该完善好,但因为测试环境的数据远不如线上环境来的正常,插件移植也比较麻烦,所以一直懒得弄。

    这一点,应该学习一下其他项目,定期会将线上的 任务/漏洞等数据同步到线下。

    迷,凌晨4点,从十点开始,其实也就调试了十几次。

    难受啊兄der

  • 相关阅读:
    通过百度地图API实现搜索地址--第三方开源--百度地图(三)
    对图片进行各种样式裁对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等剪:圆形、星形、心形、花瓣形等--第三方开源--CustomShapeImageView
    仿UC天气下拉和微信下拉眼睛头部淡入淡出--第三方开源--PullLayout
    【英语】Bingo口语笔记(14)
    【前端】HTML入门笔记
    【英语】Bingo口语笔记(13)
    【英语】20141013 生词
    【英语】20141011 生词
    【Android】Android 学习记录贴
    【英语】Bingo口语笔记(12)
  • 原文地址:https://www.cnblogs.com/huim/p/12664282.html
Copyright © 2011-2022 走看看