专栏首页数据和云案例分析:闰秒带来的BUG是否影响了你?

案例分析:闰秒带来的BUG是否影响了你?

闰秒如何影响了IT世界?在2016年底我们写下的文章里曾经提到2017开年多出这一秒,大家是否平稳度过?欢迎大家留言讲诉你遇到的真实故事。

毫无疑问,根据墨菲定律,可能出现问题的地方就必定会出现问题,只不过何时、何地、何人,就不得而知。根据网上的消息,硅谷的Cloudflare公司的服务确实因为闰秒遭遇到BUG,进而影响了部分用户的域名解析。Cloudflare以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务。

问题的原因出在 Cloudflare 的RRDNS软件内部,一个Number的最小输出结果应该为零,结果在闰秒时变成了负数。

A little later this negative value caused RRDNS to panic. This panic was caught using the recover feature of the Go language.

最终影响就是,Cloudflare 为托管网站提供的一些DNS解析以失败告终。

看看这段程序代码,如何因为一秒而产生了错误。在这段代码中,当 time.Now() 早于早前同样获得的 start 值,则可能返回负数。

这段代码在时间一直向前时工作正常,然而当时间回调时,就出现了问题。1秒虽然很短,但是在Cloudflare的服务请求中,请求的响应是毫秒级别的。

// Update upstream sRTT on UDP queries, penalize it if it fails if !start.IsZero() { rtt := time.Now().Sub(start) if success && rcode != dns.RcodeServerFailure { s.updateRTT(rtt) } else { // The penalty should be a multiple of actual timeout // as we don't know when the good message was supposed to arrive, // but it should not put server to backoff instantly s.updateRTT(TimeoutPenalty * s.timeout) } }

解决的代码只修改了一行,判断了小于0的情况。

当然 Cloudflare 的响应是非常迅速的:

2017-01-01 00:00 UTC Impact starts 2017-01-01 00:10 UTC Escalated to engineers 2017-01-01 00:34 UTC Issue confirmed 2017-01-01 00:55 UTC Mitigation deployed to one canary node and confirmed 2017-01-01 01:03 UTC Mitigation deployed to canary PoP and confirmed 2017-01-01 01:23 UTC Fix deployed in most impacted PoP 2017-01-01 01:45 UTC Fix being deployed to major PoPs 2017-01-01 01:48 UTC Fix being deployed everywhere 2017-01-01 02:50 UTC Fix rolled out to most of the affected PoPs 2017-01-01 06:45 UTC Impact ends

下图显示了Cloudflare 监控的接入解析错误率,修复程序部署后,错误率迅速下降。

本文分享自微信公众号 - 数据和云(OraNews),作者:盖国强

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL中InnoDB引擎对索引的扩展

    MySQL中,使用InnoDB引擎的每个表,创建的普通索引(即非主键索引),都会同时保存主键的值。

    数据和云
  • 案例分析:倾斜值传入导致 SQL 资源消耗升高

    作者 | 邓秋爽:云和恩墨技术工程师,有超过七年超大型数据库专业服务经验,擅长 Oracle 数据库优化、SQL 优化和 Troubleshooting。

    数据和云
  • 经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例

    墨墨导读:恢复专家前辈给我们精心准备了个故障,埋了四个雷,整个恢复过程感觉像是过山车,整理分享至此,希望对大家有帮助。

    数据和云
  • 丢给你个环形队列玩玩

    假设我需要处理10000个字节的数据,就是串口一次性会发过来10000个字节,然后单片机每次取10个字节处理,然后处理1000次就处理完了

    杨奉武
  • MySQL中InnoDB引擎对索引的扩展

    MySQL中,使用InnoDB引擎的每个表,创建的普通索引(即非主键索引),都会同时保存主键的值。

    数据和云
  • 一个有趣的时间段重叠问题

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1148526
  • pytorch基础知识:张量(下)

    其中一维标量主要用于Bias(偏差)中,如在构建神经元中多组数据导入到一个神经元中,由激活函数激活输出一个数值,则该神经元主要使用bias功能。线性层输入(Li...

    用户6719124
  • pytorch基础知识-维度变换-(上)

    维度变换是pytorch中的重要操作,尤其是在图片处理中。本文对pytorch中的维度变换进行讲解。

    用户6719124
  • 重叠时间段问题优化算法详解

    这是一个实际业务需求中的问题。某一直播业务表中记录了如下格式的用户进出直播间日志数据:

    用户1148526
  • Linux-Shell变量

    悠扬前奏

扫码关注云+社区

领取腾讯云代金券