毎週新しいコードを本番環境にリリースしていますが、Glassfish には何の問題もありません。今週末、ホスティング プロバイダーでラックを移動する必要がありました。コードの変更はありませんでした (電源を切って、移動し、再度ラックに入れ、電源を入れただけです) が、新しいネットワーク インフラストラクチャを使用していて、突然ふるいのようにファイル記述子がリークしています。したがって、ネットワークの変更により現在失敗している何らかの接続が確立されようとしていると推測しています。
IMQ インスタンスが組み込まれた RHEL4 で Glassfish v2ur2-b04/AS9.1_02 を実行しています。移動後、私は見始めました:
[#|2010-04-25T05:34:02.783+0000|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=33;_ThreadName=SelectorThread-?4848;_RequestID=c4de6f6d-c1d6- 416d-ac6e-49750b1a36ff;|WEB0756: HTTP 処理中に例外をキャッチしました。
java.io.IOException:
sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) で開いているファイルが多すぎます
...
[#|2010-04-25T05:34:03.327+0000|WARNING|sun-appserver9.1| javax.enterprise.system.stream.err|_ThreadID=34;_ThreadName=Timer-1;_RequestID=d27e1b94-d359-4d90-a6e3-c7ec49a0f383;|
com.sun.jbi.management.system.AutoAdminTaskでの java.lang.NullPointerException .pollAutoDirectory(AutoAdminTask.java:1031)
lsof を使用してファイル記述子の数を確認すると、次のようなエントリがかなり表示されます。
java 18510 root 8556u sock 0,4 1555182 プロトコルを識別できません
java 18510 root 8557u sock 0,4 1555320 プロトコルを識別できません java
18510 root 8558u sock 0,4 1555736 プロトコルを識別できません
1555883 プロトコルを識別できません
毎分開いているファイル記述子のカウントを行うと、毎分 12 ずつ増加することがわかります。これらのソケットが何であるかはわかりません。
アプリケーションをアンデプロイしたので、プレーンな Glassfish インスタンスしか実行されていませんが、それでも 1 分間に 12 個のファイル記述子がリークしています。したがって、このリークは Glassfish または潜在的に IMQ にあると思います。
これらの未知のプロトコルのソケットを追跡するには、どのようなアプローチを取る必要がありますか? どこを見るべきかについての詳細情報を得るために、どのツールを使用できますか (またはフラグを lsof に渡すことができますか?)
ありがとう、
チャック