localhost:3000 に無限に /socket.io のリクエストが流れていた原因と解消事例

かなり特殊なケースなので、ブログに残したいと思います。(個人ブログの価値 = ロングテール)

最初はウィルスかなと、かなりビビりましたが、結果的には自分が認識しているソフトウェアの挙動でした。

発生した現象

node 系のアプリケーションを開発中に、下記のようなログが大量にコンソールに流れました。

GET /auth/signin?callbackUrl=/socket.io?X_LOCAL_SECURITY_COOKIE=&EIO=3&transport=polling&t=1730887668416-113766

localhost:3000/socket.io に大量のアクセス(ポーリング処理)が発生して、それを Auth.js がリダイレクトさせまくった結果、Next.js のログが大量に流れていました。

アプリケーション環境

  • Windows11 Pro
  • Next.js (コンテナやWSLは使用していない)
  • Auth.js (旧 NextAuth)

切り分け手順

  1. まず、next dev の実行直後に大量のログが流れたので、アプリケーションの問題だと思い、 socket.io で grep ⇒ 該当コード無し。
  2. Next.js がホットリロードなどで socket.io を使っているという仮説 ⇒ オフ ⇒ 変わらずログが流れる。
  3. ブラウザに謎のプロセスが残ってて、localhost:3000 にアクセスしている仮説 ⇒ ブラウザのプロセスを落として Next.js 起動 ⇒ 変わらずログが流れる
  4. 環境起因を疑い始める ⇒ 他の人に同じブランチで Next.js を起動してもらう ⇒ ログが流れない ⇒ 自分の環境だけ悪いことが確定(所謂「おま環」ってやつ)
  5. 起動しているデスクトップアプリを順番に落としていく ⇒ Docker Desktop だけ残しても変わらず
  6. 「node /socket.io?X_LOCAL_SECURITY_COOKIE=&EIO=3&transport=polling&t=」でググる ⇒ まさかの同じ現象の記事を発見 ⇒ Geforce Experience のプロセスが原因らしい ⇒ アプリ起動 ⇒ エラーで立ち上がらない ⇒ アンインストール ⇒ ログ消える

原因と解決方法

僕の場合は、Geforce Experience というアプリケーションが起動に失敗していて、何度も localhost:3000 にリトライしていたみたいです。(少し挙動に関する予測が入ってます)

その後、Geforce Experience をアンインストールして再度インストールすると、無事に起動して socket.io のログも流れなくなりました。

感想戦

WireShark とか使えば最初からトラフィックの元を特定できたので、めんどくさがらずに、ネットワーク系のツールも使いこなせるようになりたいなと思いました。(昔は使っていたが最近は使う機会が無くてブランクがある。)

あと、変に気を利かせて「Nextjs Authjs socketio polling」とかでググらずに、最初からログをべた貼りしてググればよかったなと後悔。

タイトルとURLをコピーしました