2012-02-20 23 views
4

私たちは本質的に、約50以上の戦争(各サービスに1つずつ)を持つサービスベースのバックエンドをホストしているため、戦争の起動性能を向上させようとしています。これらすべてのサービスを一度に展開すると、PermGenが発生することがあります。また、サーバーの再起動にかなりの時間がかかります。だから私はパフォーマンスの向上のためにアーキテクチャのすべての可能性(WLS、Spring、Hibernate、CXF)を評価しようとしています。Spring AOPとAspectJの起動時のパフォーマンス/メモリの要求

すべてのトランザクションはSpring AOPによって行われ、SLA/PoliciesのいくつかはAOP Pointcutsを使用します。

Spring AOPポイントカットが作成されていないか、またはJUnitがPermGenになる原因がたくさんある場合があります。スタートアップ時間の大半は、pointcutの作成とpointcutオブジェクトの取得です(カスタムのPointcut/Interceptorクラスのいくつかを単一のクラスと単一のPointcutにマージして、起動時に作成されるPointcutの量を減らしました約30%)。

このすべてをAspectJに変換する価値はありますか(私はこれまで使用していませんでした)、コンパイル時に何かの利点を得るには?これにより、起動時のパフォーマンスとメモリ使用のスピードは向上しますか?

Spring AOP slow startup time

Spring AOP vs AspectJ

そして、私は間違いなく、起動やメモリの要件のオフロードを取る方法から純粋に探しています、とだけしたい:

私は記事を見てきました努力するだけの価値があれば、移行を試みてください。

答えて

0

私はこの非常に同じ問題で苦労し、良い答えが出てこなかったが、これまでに試したことがありますが、時間を節約できます。

私はAspectJ 1.7.1でLTWを使用しています。これは起動時間に約3秒を追加します。カスタムクラスローダーでTomcatを使用していますので、他のパッケージをスキャンしないでください。私の起動時の残りの部分は、私がコメントベースのautowiringのための私のコードベースを分析しているようです。

08:11:27,878 INFO [DefaultContextLoadTimeWeaver] Using a reflective load-time weaver for class loader: org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader 
08:11:30,326 INFO -- the last info printed from the LTW infrastructure 

あなたがマシンであれば、私はSSDとかなり速いマシンを持っているが、これは非常に長い時間がかかる可能性として速くありません。

新しいAspectJ 1.7は、LTWが高速化するチャージモードを持っています。https://bugs.eclipse.org/bugs/show_bug.cgi?id=367673私はそれを使用していないので、どのようにうまく動作するのか分かりません。

プロジェクトをAspectJプロジェクトにするのが最も速いのは、コンパイル時の織り作業を行っているため、aspectJによって起動時のオーバーヘッドがないことです。私は私のビルドシステムにaspectJを統合するのに気にしていないので、このオプションを使用していません。アスペクトを書くのが簡単すぎないようにしています。

関連する問題