事象
ある日突然、オフィスのローカル開発環境でHTTP通信が異常なほど遅くなり、タイムアウトするようになりました。
その後F5でリロードすると普通にレスポンスが返ってくる、といった感じで2回に1回、交互に遅くなります。
特定のPC、スマホで発生しており、違うチームの機器では起こっていない事象でした。
また、本来来るはずのRedmineやGitLabからの通知メールが全く来なくなっていることにも気づきました。
調査
仕事にならないので調査を始めると、遅い端末はCentOS7.3に立てたSquid 3.5.20をHTTP、HTTPSプロキシに設定していることが分かりました。
squidを通さないようにプロキシを設定すると事象は発生しなくなる為、squidに原因があるとみてバージョンアップやら設定見直しをしましたが復旧せず、原因が分かりません。squidのログにもそれらしいものがありませんでした。
そこで対象のsquidは一旦諦め、別のCentOS7.3にsquidを新規インストールし、同じ設定でsquidを起動、プロキシとして設定しました。
しかし・・・全く同じ事象が発生しました。これはsquidが原因では無い、他に要因がある、と気づき始めました。
解決
目線を変え、/etc/resolv.confで設定している参照先DNSにpingしてみると、WAN内にある優先DNSサーバから応答がありません。生きてる方の代替DNSサーバを先の行に設定すると・・・事象が解決しました。
プライマリDNSが落ちていたのが原因で、squidは主原因ではありませんでした。DNSが両方死んでいるなら接続出来ずに気付いたのでしょうが・・・なまじ繋がってしまう為にsquidの方に目が行っていました。
PCでプライマリ、セカンダリDNSを設定している場合、片側だけ死んでいる場合は生きているDNSに切り替えて普通に使えてしまいますが、運用中のsquid設定では毎回死んでいるプライマリDNSに名前解決を依頼し、タイムアウトしたら次は生きているセカンダリDNSに依頼する、という挙動であるようです。
そう考えるとsquidが原因、とも言えるので設定を再調査する予定です。
その後
管理者が運管ミドルからのアラートメールに気付いてプライマリDNSは即日復旧されました。
この件を通じて学んだことは、squidを通している環境でメールが届かない、HTTP通信がタイムアウトしたりしなかったりした時にまず怪しむべきはプライマリDNSであるということです。
人間切羽詰まると視野が狭まって全体像を掴めなくなります。そんな時は一呼吸入れて落ち着くのを忘れないようにしたいですね。