🦅

psqlの接続が数分間ハングする謎の遅延問題の原因が、macのOSバージョンにあった話

に公開

私が遭遇した、psqlコマンドの奇妙な接続遅延問題の解決に至るまでの調査劇について、共有します。
同じように「psqlの接続だけが異常に遅い…」という問題にぶつかってる方の、助けになれたら嬉しいです。

謎の現象:psqlの接続だけが数分間待たされる

ある日、PosgreSQLのデータをクエリをする為、ローカルのmac端末(社内PC)からリモート(AWS)にあるPostgresSQLにpsqpで接続しようとしたところ、接続が異常に遅いことに気が付きました。

psql -h hoge.cluster-xxxxxxxxx.ap-northeast-1.rds.amazonaws.com -U postgres
Password for user postgres: <<< パスワードの入力を求められるまで、数分かかる
psql (17.5, server 16.9)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: none)
Type "help" for help.

postgres=> <<< パスワードの入力後、プロンプトが返ってくるまでまで。数分かかる

この問題の症状は非常に奇妙でした。

  • パスワードを求められるまでと、その後にプロンプトが表示されるまで、それぞれ数分間の「沈黙」がある。しかし、一度接続してしまえば、SQLクエリのレスポンスは高速。
  • AWS CloudShellから同じDBに接続すると、遅延は一切なく瞬時に接続できる。
  • この現象は、複数のmac端末、他のクライアントソフト(pgAdminなど)でも再現する。

接続プロセスのどこかに問題がありそうです。

犯人探し(調査の経緯)

考えられる原因を一つずつ潰していくことにしました。

容疑者1:DNSの逆引き問題?

切り分け内容: PosgreSQLのパラメータlog_hostnameを確認。
結果: offになっており、DNSの逆引きは行われていなかった。
判定: DNSの逆引きが原因ではない。

容疑者2:クライアント側のDNSやTCP接続?

切り分け内容: telnet <hostname> 5432でTCP接続を試す。
結果: 瞬時に接続成功。
判定: クライアントの名前解決やTCPレベルの接続は正常。

容疑者3:SSL/TLS通信のオーバーヘッド?

切り分け内容: sslmode=disableで接続を試す。
結果: 遅延は解消せず。
判定: SSLハンドシェイクが直接の原因ではない。

容疑者4:パスワード認証方式の問題?

切り分け内容: パスワード認証方式をscram-sha-256からmd5に変更。
結果: 遅延は解消せず。
判定: パスワード認証方式が原因ではない。


DBの接続ログに映った決定的証拠…と、誤った結論

原因究明が難航する中、DBの接続ログを分析してみると(先にやれ)、ある事実が浮かび上がりました。

(13:55:20にpsqlコマンドを実行)

2025-07-30T13:55:21.000+09:00
2025-07-30 04:55:21 UTC:xxx.xxx.xxx.xxx(61182):[unknown]@[unknown]:[9938]:LOG: connection received: host=xxx.xxx.xxx.xxx port=61182

(約90秒間の無通信)

2025-07-30 04:56:52 UTC:xxx.xxx.xxx.xxx(9786):[unknown]@[unknown]:[10013]:LOG: connection received: host=xxx.xxx.xxx.xxx port=9786
2025-07-30T13:56:52.000+09:00

(この後はSSLのネゴシエーションまで瞬時に完了)

2025-07-30 04:56:52 UTC:xxx.xxx.xxx.xxx(9786):postgres@postgres:[10013]:DEBUG: SSL: write alert (0x0100): "SSL negotiation finished successfully"

ログから分かることは

  1. 最初の接続はサーバーに即時到達している。
  2. しかし、その後クライアントからの通信が途絶えている。
  3. 約90秒後、クライアントが再接続を試み、2回目は成功している。

この事実に基づき、私は「社内ネットワークの何か or 端末に強制インストールさせられてるセキュリティソフトが悪さをしている」と結論付けました。

真犯人はmacのOSバージョン

社内インフラチームに調査依頼を実施したところ、macのOSバージョンが15系の端末では本事象が発生しないことが分かりました。
私の端末含め、14系の端末では再現性がある状況。

この事実を受けて、macのOSバージョンに問題があるかを切り分ける為、自分の端末のmacOSをSonoma (14系) からSequoia (15系) にバージョンアップしたところ、まさかの事象が解消。

まとめ

macOSのバージョンアップで事象が解消してしまったので

  • macのOSバージョンの何が悪いのか
  • 14系でしか発生しない問題なのか

などなど分からず終いで、まさしく

ではありますが、このような事象には、端末のOSバージョンにも目を向ける必要があると、勉強させられる調査劇でした。

Discussion