web-dev-qa-db-ja.com

java.net.SocketException:使用可能なバッファ領域がありません(最大接続に達しましたか?):JVM_Bind

TomcatはWindowsでwebappを実行しています。数日後(非常に低い負荷の下で)、タイトルに記載されている例外がログに表示され始め、その時点から新しい接続を確立できなくなり、唯一の修正はサーバーを再起動することです。

環境:

  • 最新のTomcat 6
  • Windows Server 2008 R2
  • JDK 6アップデート30
  • SQL Server 2008
  • Kerberos認証

これまでに収集された証拠:

  • netstatに過剰な接続が表示されない
  • ProcessExplorerは、過剰な量のオープンファイルハンドルを表示しません
  • システムのメインメモリ使用量は平均です
  • JVMヒープ使用量は平均です
  • tomcatを再起動しても問題は解決しません

未解決の質問:

  • 接続がリークしている場合、netstatに表示されるべきではありませんか?
  • oSはすべてのプロセスリソースを解放する必要があるため、アプリケーションサーバーを再起動して問題を解決する必要はありませんか?
  • 問題の原因を突き止める方法はありますか?例えば。 lsofなどに似た監視ソフトウェアをインストールしていますか?

私はアイデアを失いました、どんなヒントもありがたいです!

38

このエラーが発生した理由は、Windows Server 2008 R2/Windows 7のバグです。複数のコアを持つマシンでの競合状態により、カーネルがループバックソケットをリークします。このパッチは問題を修正します。 http:// support.Microsoft.com/kb/2577795

56

Windows 7 64ビットでAlfresco Community 4.0dを実行していましたが、同じ症状とエラーがありました。

この問題は、Microsoftのパッチで修正されました。「Windows Server 2008 R2またはWindows 7を実行しているマルチプロセッサコンピューターでカーネルソケットリークが発生します」( http://support.Microsoft.com/kb/2577795 )(つまり、Buddy Casinoの回答(以下を参照))。

私が付け加えたいもう一つの観察は、Alfrescoサービスがシャットダウンされてから約5-10分後にWindows接続(Internet Explorer、リモートデスクトップなど)が再び機能するということです。

Alfrescoは優れた製品であり、私はそれを廃棄しなければならないと恐れていました。幸いなことに、stackoverflowが助けになりました!

Buddy Casinoの回答に再び感謝します。

質問に投票した人へのブーイング。

11
mvanle

W2008R2、Tomcat 6.0.29、Java 1.6.0.25。最後に個々のサービスのシャットダウンを開始し、サーバー上でも実行されているAlfrescoのインスタンスまたはBackup Exec Agentサービスのいずれかに絞り込んだと考えています。これらのサービス(合計4つ)が停止した後、 Tomcatのアプリケーションは再び動作を開始しましたが、stdoutログに奇妙なバッファ/接続エラーがまだ表示されていました。問題が戻ってくるのを待ってから、どれが原因かを確認する必要があります。 1週間以上。

サーバーでAlfrescoまたはBEを実行している可能性はありますか?

1
J Jost