1

Spring2.0.8アプリケーションが本番環境にあります。Tomcat5.5.xとJRE1.5.xで実行されており(ええ、アップグレードする必要がありますが、今はポイントではありません)、DBの選択肢としてOracle11gを使用しています。

数か月前(7月と言います)にアプリケーションをアップグレードし、過去1か月ほどでOracle10gからOracle11gに切り替えました(データベースのバージョンに合わせてOracle JDBCドライバーも変更しました)。

私たちは、本番環境で深刻で予期しない問題を抱えています。1日前の時点で、ヒープスペースのOutOfMemoryエラーが数時間間隔で発生しています。これにより、応答時間が約100倍遅くなるか、ユーザーが接続できなくなります。

セットアップは次のとおりです。

  • サーバーを実行するためのWindowsマシン
  • SSOが有効になっているApache2.2およびTomcat5.5、合計メモリ:128MB、最大メモリ:512MB
  • Spring 2.0.8 Webapp
  • Oracle 11g

このエラーに気付いたので、これが私たちが試したものです。

  • ログをチェックしてください-パターンはないようです。明らかに、ログはサーバーのメモリが不足している場合にのみ通知するため、問題が発生した時点ではなく、機能しなくなった時点を示します。
  • サーバーを再起動します
  • Tomcatの再インストール
  • Tomcatが使用できるメモリの量の増加-これは問題を長引かせました、もちろん、Tomcatは私たちが与えたのと同じくらい食べました
  • サーバーとApache+Tomcatの両方の新規インストール
  • ヒープダンプの生成-異常なことは何もありません。ほとんどのメモリはアプリケーションの起動に使用されます。
  • DBをチェックします-それは問題なく、迅速で応答性が高く、ロックはありません

私は他に何をすべきかについてのアイデアを探しています。合計5つの異なるプロダクションでこれと同じセットアップがありますが、この問題のあるセットアップは、ユーザーとデータの数が最も少ないものです。

4

2 に答える 2

1

理解できたので、すぐにやるべきことのリストに次のことを追加することをお勧めします。

  • JVM を Java 7 にアップグレードします。Java 5 は「サポート終了」となりました。これは、Oracle Java サポート契約を結んでいる場合を除き、これ以上セキュリティ パッチを入手できないことを意味します。

  • Java 7 ... または Java 6 にアップグレードできない場合は、少なくとも入手できる Java 5 の最新のパッチ リリースにアップグレードしてください。

  • Tomcat 6 または 7、または少なくとも最新の Tomcat 5.5 にアップグレードします。

  • OutOfMemoryError深刻な速度低下を引き起こす問題を回避するには-XX:+UseGCOverheadLimit、JVM コマンド ラインにオプションがあることを確認してください。

また、そのシステムで重要な開発作業を行う予定がある場合は、Spring 3.x にアップグレードすることを検討してください。

于 2012-10-31T07:39:59.953 に答える
0

わかりました、これを理解しました。ほとんど使用されていない、不適切に作成された SQL クエリであることが判明しました。ヒープダンプを分析することで、大量のメモリを占有しているオブジェクトを見つけることができ、そこから出発しました。

于 2012-10-31T07:19:57.563 に答える