100回投げて99番目に遅いレイテンシやavg timeやmin timeなんかをMackerelで可視化できるやつを書いた。ただ昨日書いた以下のような問題(ハッピーアイボールというらしい)があってやりたいことに対しては2回の問い合わせはオーバーヘッドでしか無いという。
「Goの標準ライブラリの名前解決が意図した動作をしないなら自分でDNSクライアントを書いちゃえばいいじゃない」って脳内のマリーアントワネットが言っていたのでパケットを作って飛ばす感じにして書いてみた。v2ってディレクトリを掘って作っているがエラーハンドリングもして無ければdecodeして正しいデータの確認もしてないので使い物になるかは怪しい。
ただこれでAレコードの問い合わせ1回の時間を正確に測ることができるのでちゃんと書けばうまくいくかもしれない。DNSクライアントというかそもそもUDP使って何か書いたこと殆どないのでUDPの勉強も少ししなきゃ。(動かしてstraceしてみて改めてUDPってsend(2)してrecv(2)してるだけなんだなと体験できてこれは良かった)