0

構成: Linux マシンにデプロイされた WebSphere portal 6.1 クラスター (2) の前に iPlanet Web サーバーがあります。

ユーザーがファイル システム (NFS マウント) 間で 10 GB のファイルをコピーしようとすると、他の Java ライブラリを使用するよりも高速であることを期待して、Java ランタイムを使用してファイルを別の NFS マウントにコピーします。

proc = rt.exec("cp " + fileName + " " + outFileName);

デプロイされるアプリケーションは JSF ポートレット アプリケーションです。
a) セッション タイムアウトはアプリ サーバーとアプリケーションで 60 分です
b) セッションを維持するためにクライアント ページから Ajax 呼び出しがあります

ユーザーは 3 分以内に HTTP 500 を受け取りますが、ログにはファイルがまだコピー中であることが示されています。WebSphere が HTTP 500 を送信している理由がわかりませんか?

10 分後にファイルがコピーされ、[更新] をクリックすると続行できます。

この HTTP 500 の原因が不明です。

4

2 に答える 2

1

数分後にクライアントが HTTP 500 エラーを受け取る理由はいくつかあります。スタック トレースといくつかの関連ログがなければ、WebSphere 内のどのコンポーネントが 3 分後に「起動」し、すべてを停止したかを知ることは不可能です。これは、Web コンテナーのスレッド・プールに対する WebSphere のタイムアウト設定である場合もあれば、他のタイムアウトである場合もあります。ログから簡単に結論付けることができます。

これを修正するには、次のいずれかを実行できます。

  • 関連するタイムアウト値を調整します (これも正確なタイムアウトに応じて異なります)
  • 設計を変更して、実行時間の長いタスクがバックグラウンドで実行されるようにします。そのために、 WebSphere のWork Manager API、または非同期 Bean / サーブレットを使用できます。
于 2012-12-17T17:16:26.800 に答える
1

WebContainer スレッドは、長いタスクに使用することは想定されていません。彼は 3 分後に 500 を取得しています。これは、WebSphere がスレッドがハングしていると判断した時間だからです。

あなたがすべきことは、 を使用しWorkManagerてその長いタスクを実行することであり、クライアントはポーリングしてタスクのステータスを確認できます。

近い将来に WAS v8/v8.5 へのアップグレードを検討している場合は、そのために使用することをお勧めしますAsynchronous Servlets

于 2012-12-17T16:45:44.433 に答える