4

Coldfusion 8 のインスタンスで BlazeDS を実行しています。70 のロング ポーリング リクエストが許可され、2 秒のポーリング間隔でクライアント ポーリングに移行する、プロデューサーとコンシューマーの両方として機能するフレックス チャット アプリです。jRun メトリックのロギングが有効になっています。サーバーは、1200mb の最大ヒープ サイズ、最大 210 の jrun スレッド、および最大 150 の同時フラッシュ リモート処理要求でセットアップされます。

次の JRun 統計から大きく逸脱することなく、すべてが何時間もクルージングしているように見えます。

実行中のスレッド、使用可能なスレッド、Jrun セッション、合計使用メモリ MB、使用メモリ MB
71,101, 148, 332.864, 34.866

その後、突然、おそらく数時間かけてメモリがゆっくりと増加し、時々 java.lang.OutOfMemoryError: Java heap space 例外が発生します。メモリは使用されていますが、解放されておらず、おおよそのメトリック データが添付されています。

実行中のスレッド、使用可能なスレッド、Jrun セッション、合計使用メモリ MB、使用メモリ MB
71、130、195、1015.424、249.94

Coldfusion モニターには異常なメモリ使用量は表示されず、アプリケーション例外もスローされていません。

system.out ログに次のようなエラーが多数記録されていますが、それらが関連しているかどうかはわかりません。BlazeDS に関連するそれらに関する情報は見つかりません。

java.lang.IllegalStateException: Session is invalid
at jrun.servlet.session.JRunSession.checkSessionValidity(JRunSession.java:394)

メモリの使用率が非常に高くなることがありますが、out of mem エラーは発生しません。その後、アクティビティが落ち着くとメモリが解放されますが、使用可能なメモリが 20 秒で 480 MB から 800 MB に変化することがあります。メモリに段階的なリリースはありません。

誰かが前にこのようなものに出くわしたことがありますか?

私のservices-config.xml

<properties>  
  <polling-enabled>true</polling-enabled>  
  <polling-interval-millis>2000</polling-interval-millis>
  <wait-interval-millis>60000</wait-interval-millis>  
  <client-wait-interval-millis>1</client-wait-interval-millis>  
  <max-waiting-poll-requests>70</max-waiting-poll-requests> 
</properties>
4

1 に答える 1

3

あなたの最善のアプローチは、標準の Java OutOfMemoryError 分析になります。

これにより、どのオブジェクトがすべてのメモリを消費しているかがわかります。に注目するのは時期尚早だと思いますjava.lang.IllegalStateException。JVM のメモリが不足すると、すべての賭けが無効になります。あらゆる種類のエラー メッセージが表示される可能性があります。

ところで: セッション タイムアウト ポリシーは何ですか?

于 2009-10-25T17:23:14.550 に答える