かなり特殊なケースなので、ブログに残したいと思います。(個人ブログの価値 = ロングテール)
最初はウィルスかなと、かなりビビりましたが、結果的には自分が認識しているソフトウェアの挙動でした。
発生した現象
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)
切り分け手順
- まず、
next dev
の実行直後に大量のログが流れたので、アプリケーションの問題だと思い、socket.io
で grep ⇒ 該当コード無し。 - Next.js がホットリロードなどで socket.io を使っているという仮説 ⇒ オフ ⇒ 変わらずログが流れる。
- ブラウザに謎のプロセスが残ってて、localhost:3000 にアクセスしている仮説 ⇒ ブラウザのプロセスを落として Next.js 起動 ⇒ 変わらずログが流れる
- 環境起因を疑い始める ⇒ 他の人に同じブランチで Next.js を起動してもらう ⇒ ログが流れない ⇒ 自分の環境だけ悪いことが確定(所謂「おま環」ってやつ)
- 起動しているデスクトップアプリを順番に落としていく ⇒ Docker Desktop だけ残しても変わらず
- 「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」とかでググらずに、最初からログをべた貼りしてググればよかったなと後悔。