Bug实录(一)

代码完成,检验完毕,逻辑正常,本地测试没有出现任何异常!bug还是不离不弃地发生了!

接下来,打包代码,生成开发环境的线上实例,作为苦逼的程序员,开始了自测。
告警!告警!告警!

自测过程中发现,拨测同一个接口,在间隔不到两分钟的时间内,居然出现了数据不一致的情况。该接口对应的程序代码是单线程的,没有多线程并发操作。因此可以断定此非程序代码之过也,原因不在代码层面,当时脑海中有一个怀疑:接口处理请求的方式是随机的,即如果服务器上同时有多个实例,那么对该接口的请求是被随机分发到任何一个实例上执行的,可能是该程序有两个实例在运行,一个是代码未更新前已在运行的实例,一个是代码更新后启动的新实例。

多次拨测接口后,仍然是数据正常与异常时不时交叉出现。故此判断问题出现在服务器层面,因此上服务器定位问题。运行linux命令:jps | grep 实例名的前缀,我勒个去,居然真的有两个程序实例在同时运行。可是我明明在启动新实例时是restart命令,怎么还会出现这种吊诡的情况呢?

细细想来,在restart命令执行过程中,我的旧实例尚未被杀死,而新实例却先行已经启动完成,中断了杀死的旧实例的命令的运行,致使新旧两个实例同时存在运行。在此次教训之后,每次restart后,我都会使用linux命令:jps | grep 实例名的前缀 查看是否只有一个实例运行。当然还有一种更省心的方法,即先stop原来运行的实例,再start现在需要运行的新实例,消除隐患。 bug不仅仅存于程序员书写的程序代码之中,当一份程序的正常运行需要依赖、资源,那么这些依赖、资源、环境都是bug滋生的沃土

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值