2016-08-11 21 views
1

jspを使用してJava Webサーバー上に構築されたブラウザゲームがあります。Java Web Serverが突然応答なしで例外的に停止する

httpセッションオブジェクトを使用してデータを保持する新しいモジュールを追加しました。しかし、それが3〜4時間実行された後、突然動作を停止し、フリーズします。エラーログをチェックすると、例外がスローされることはありません。

サーバーの電源はすぐに50-60です。

私はVisualVMのを使用してサーバーを監視し、ここで止まるまで4時間後の結果である:

enter image description here

を私は1024MBとして最大メモリを設定します。あなたが見ることができるように、その問題は記憶に関するものではありません。

私が気づくのは、サーバーが停止するとスレッド数が増えたことです。

スクリーンショットによれば、私はhttpsessionオブジェクトを疑うべきですか?なぜサーバーは応答を停止するのですか?

+1

jconsoleで「デッドロック検出」をチェックします。応答が停止する瞬間に – MGorgon

+0

? – ftb

答えて

1

システムの制限やデッドロックのようです。

あなたのスレッドグラフは問題があるようです:リビングスレッドの数は重要であり、決して減少しません。 Webアプリケーションはステートレスでなければなりません。生きている踏面の数は、要求が到着したときに上昇するはずであるが、要求が完了したときにも低下する。
私はあなたのアプリケーションの場合のような印象はありません。

MGorgonが正しいです。

jconsoleの「デッドロック検出」もチェックする必要があります。

JDK 6以降のバージョンを使用する場合は、ThreadMXBeanを使用できます。それはあなたの必要性に対処するfindDeadlockedThreads()方法と他の興味深い方法があります。

とにかく、デッドロックではない場合は、問題の原因に関する詳細情報を入手するには、OSが何であれシステムログを調べることをお勧めします。多分おもしろいことがあります。

+0

詳細な回答ありがとうございます。しかし、私は "デッドロック検出"の部分を取得できませんでした。システムが稼動しているときにチェックするか、問題が発生した時点で使用する必要がありますか?通常の実行時間で試してみると、「デッドロックが検出されていません」と表示されるためです。 – ftb

+0

あなたは大歓迎です。面白い主語:) jvisualvmではなく、(スレッドタブの)jconsoleにボタンがあります。それらはあなたのJDKの同じ 'bin'ディレクトリにある2つの異なる実行可能ファイルです。 – davidxxx

+0

ああ私は説明できないと思う:)私はすでにJConsoleを使用し、スレッドタブで「デッドロック検出」ボタンを使用しています。私のサイトが応答を停止するか、いつ起動していますか? – ftb

関連する問題