Cloudflare 這次閏秒炸掉:「How and why the leap second affected Cloudflare DNS」,影響範圍包括了 DNS query 與 HTTP request:
At peak approximately 0.2% of DNS queries to Cloudflare were affected and less than 1% of all HTTP requests to Cloudflare encountered an error.
主要的原因在於 Go 的 time.Now()
不保證遞增:
RRDNS is written in Go and uses Go’s time.Now() function to get the time. Unfortunately, this function does not guarantee monotonicity. Go currently doesn’t offer a monotonic time source (see issue 12914 for discussion).
修正的方式是針對時間回朔時處理:
In this patch we allowed RRDNS to forget about current upstream performance, and let it normalize again if time skipped backwards.
應該是因為 Cloudflare 這段程式還沒遇過 leap second 造成的...