web-dev-qa-db-ja.com

Websphere Application Server-高速で起動するには一体何が必要ですか?

統合テスト環境に付属しているRationalApplication Developerv7.0を使用しています。 Webアプリのデバッグを開始すると、デバッグモードでのサーバーの起動時間は5〜6分近くになります。これは、コーヒーブレイクをするのに十分な時間です。

時々、それは私を非常に怒らせて、アプリサーバーの代わりにオペレーティングシステムを構築するためにIBMを罵倒し始めます! 20以上のプロセスと役に立たないサービスを生成し、それを調整するための文書化された構成がなく、より速く開始します。

これについて私に同意してくれるJava開発者がたくさんいると確信しています。管理コンソールからデフォルトのアプリと一連のサービスを無効にしようとしましたが、うまくいきませんでした。たくさん。

Webサービスも、エンタープライズBeanも、キューもありません。接続プールを必要とする単純なWebアプリだけです。統合テスト環境を作成し、デバッグモードで高速に起動し、RAMの消費量を減らすために、過去に何かをしたことがありますか?

更新:いくつかのサービス(国際化、デフォルトのアプリなど)を無効にしようとしましたが、WebSphereサーバーが悪化しました。起動に時間がかかるだけでなく、最大2分間、ときどきフリーズし続けます。 :-(いつものように、最適化はそれほど良いことではありません!

23
Jay

サーバーコードをデバッグする最良の方法は、リモートデバッグを使用することです。

まず、サーバー開始スクリプトのJVMパラメーターに以下を追加する必要があります。

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

これにより、JVMは指定されたポートでリッスンし、IDEから、そのポートに対してリモートデバッグセッションを開始して、コードが同じプロセスで実行されているかのようにデバッグできます。

このように作業することで、サーバーを頻繁に再起動することを防ぎ、Websphereの起動時間に関する問題を回避できます。

サーバー上のバイナリとIDE)のソースが同期しなくなった場合、奇妙な結果が得られる可能性がありますが、全体としては問題ありません。

8
Nick Holt

主な理由の1つは、多くのモジュール、クラス、マニフェスト、XML記述子などを含む大規模なアプリケーションがあり、Websphereアプリケーションサーバーの起動プロセス自体がシングルスレッドであるという事実です(したがって、各アプリケーションは別々に起動される場合があります)重量が等しい場合はスレッド)。もう1つの理由は、Eclipse EMFおよびJSTフレームワークは、起動時および公開/デプロイ時にI/Oを非常に集中的に使用することです。

面倒な起動のもう1つの理由は、公開/デプロイ中に発生する注釈スキャンです。この注釈スキャンは、さまざまな方法で制御および変更できます。このサイトを見てください: http://wasdynacache.blogspot.se/2012/05/how-to-speed-up-annotation-processing.html

まず、CPU、メモリ、HDDの両方のハードウェアを調べて評価します。起動時にプロセッサが100%長時間実行されていますか?その場合、プロセッサが弱すぎる可能性があります。ページングは​​発生しますか?次に、RAMをもう少し入れなければならない場合があります。 Websphere/EclipseJSTおよびEMFフレームワークはI/Oが非常に多いため、SSDディスクへの投資を検討する必要があります。また、マシン上の他のプロセス(ウイルス保護ソフトウェアなど)も確認する必要があります。 。)Websphere Javaプロセスからハードウェアリソースを盗まないでください。

したがって、ハードウェアの場合:1。プロセッサ-かなり高速なもの。発行と起動はほとんどシングルスレッドであるため、それほど多くのCPUコアは必要ありません。2。メモリ-少なくとも512Mbの物理RAMが必要です。これはサイズによって異なります。もちろんあなたのアプリケーションの。 3.ストレージ-基盤となるEclipseフレームワークはI/Oを集中的に使用するため、私は間違いなく高速SSDを選びます。

起動フェーズのフットプリントを減らすためのいくつかの秘訣を次に示します。これらの設定を適用する前に、起動の違い、つまり起動時間の短縮を観察できるように、ベースライン起動を記録してください。

  1. JVM引数:-Xverify:none -Xquickstart -Xnoclassgc -XX:+ UseNUMA -XtlhPrefetch -Xgcthreads4(マシンに4つの仮想プロセッサをインストールしました)
  2. アプリケーションの要求に一致するようにヒープサイズを拡張します。
  3. アプリケーションの自動起動を無効にして、公開時間を短縮します。
  4. PMIと不要なトレースを無効にします。
  5. 起動時にアプリケーションのプロファイルを作成し、ボトルネックが見つかった場合は修正します。

パフォーマンスを向上させる可能性のあるその他のJVM引数:

  • com.ibm.cacheLocalHost = true
  • com.ibm.ws.classloader.zipFileCacheSize = 512
  • com.ibm.ws.classloader.resourceRequestCacheSize = 1024
  • com.ibm.ws.management.event.pull_notification_timeout = 20000
  • com.ibm.ws.amm.scan.context.filter.packages = true
  • org.Eclipse.jst.j2ee.commonarchivecore.disableZip = true

Websphereアプリケーションサーバーを即座に停止させるJVM引数:

  • com.ibm.ejs.sm.server.quiesceTimeout = 0
  • com.ibm.ejs.sm.server.quiesceInactiveRequestTime = 1000

Webコンテナのプロパティ:

  • com.ibm.wsspi.jsp.disableTldSearch = true
  • com.ibm.wsspi.jsp.disableResourceInjection = true

Eclipse.iniで指定できるJVM引数(ヒープパラメーターは環境の条件に従って構成されていることに注意してください)

  • -Dcom.ibm.ws.management.event.max_polling_interval = 5000
  • -Xquickstart
  • -Xverify:none
  • -Xmxcl25000
  • -Xjit:dataTotal = 65536
  • -Xcodecache64m
  • -Xscmx48m
  • -Xnolinenumbers
  • -Xverify:none
  • -Xmnx64m
  • -Xmx1446m
  • -Xmnx64m
  • -XX:+ UseCompressedOops
  • -XX:+ UseNUMA
7
Robert Höglund

5〜6分は正常ではありません。私はRADとWASを毎日使用して、適切な起動時間を取得しています。実行しているWASのバージョンと、RAMはありますか?

同じWASプロファイルに対して複数のワークスペースとプロジェクトを共有する場合は、ワークスペース用に新しいWASプロファイルを作成することを検討してください。

あなたはおそらくそれを試しましたが、ここに直接試すべきことの簡単なチェックリストがあります。 RADのサーバー設定で、次のオプションが有効になっていることを確認してください。

  • テストと開発のためにサーバーを最適化する
  • ワークスペース上のリソースを使用してサーバーを実行する
  • サーバーにコピーされるアプリケーションファイルを最小化する

不要な場合は、「ユニバーサルテストクライアントを有効にする」のチェックを外してください。

管理コンソールでは、次のようないくつかのサーバー設定を確認できます。

  • 開発モードで実行
  • パラレルスタート
  • 必要に応じてコンポーネントを起動します

新しいWASプロファイルを作成するときに、デフォルトでインストールされるivtアプリをアンインストールすることもできます。次に、断片化されすぎていないドライブや適切に設定されたページファイルサイズなどの通常のもの。

そして、おそらくすでに知っている最後のことは、サーバーを再起動するのではなく、サーバーに再公開することです。

6
svachon

それが春が生まれた理由のひとつです。

JMS、リモート処理などのすべての優れた機能を提供する必要はありません。Tomcat、ActiveMQ、およびOpenEJBを使用したほうがよいでしょう。

何でもしかしWebSphere。

5
duffymo

チューニングのためのいくつかのヒントがあります developerworksのRAD 6 役立つかもしれませんが、これらの多くはRAD 7にも当てはまります。

RAD 7についても同様のリストを見ましたが、見つけたら投稿します。

私はいくつかを見つけました RAD 7 のポータルのチューニングのヒント。

テスト環境での私の経験は最適ではなかったと思います。私は現在、Tomcat/Plutoを使用する傾向があります 外部起動構成を使用したリモートデバッグ ベアEclipse内から管理し、適切なJNDI構成を使用して基盤となるサーバーを抽象化します。

関連するAPIにコーディングしている場合、開発目的ではWebsphereを使用していないことは問題ではありません。 Webpshere固有の問題がある場合は、いつでも獣をクランクアップしてデバッグできます。

4
Rich Seller

EJBやJMSなどがなく、TomcatやJettyなどのスタンドアロンサーブレットコンテナの下にデプロイするだけの場合、その速度に驚かれることでしょう:-)皮肉なことですが、本当です!

3
Martin Novinski

接続プールが本当に使用する唯一のappserver機能である場合は、Apache commons dbcp( http://commons.Apache.org/dbcp/ )を使用して、webfearをすべて削除し、jettyを使用してみませんか。代わりに。これにより、起動時間が約5秒に短縮されます。その後、本当に必要を感じた場合は、本番環境でWebsphereに簡単に切り替えることができます。

1
mh0rkk

WAS V7は、アプリサーバーの起動時に起動するものを構成できるようにすることで、これらの問題のいくつかに対処します。

したがって、WAS V7に移行すると、このスペースでいくつかの改善が見られる場合があります。

1
Manglu