0

これは、serverfault にも属している可能性があります。サーバー構成とコードの組み合わせのようなものです(私は思う)

これが私のセットアップです:

Rails 2.3.5 app running on jruby 1.3.1
Service Oriented backend over JMS with activeMQ 5.3 and mule 2.2.1
Tomcat 5.5 with opts: "-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled"
Java jdk 1.5.0_19
Debian Etch 4.0

を実行topしていると、サイトのリンクをクリックするたびに、javaプロセスの CPU 使用率が急上昇します。小さなページの場合、使用率が 10% に過ぎないこともありますが、より複雑なページでは、CPU が 44% まで使用されることがあります (それ以上になることはなく、理由は不明です)。この場合、私のサーバーload averageが 8 以上まで着実に上昇している間、リクエストには数分以上かかることがあります。これは、一部のサービスからのいくつかのリクエストをロードする 1 つのリンクをクリックするだけで、複雑なことは何もありません。ほとんどの場合、Java プロセスのメモリは 20% 前後で推移しています。

少し放置すると、負荷平均はゼロに戻ります。さらにいくつかのリンクをクリックすると、元に戻ります。

Rails フロントエンド用の小さな amazon インスタンスと、すべてのサービス用の大きなインスタンスを実行しています。

さて、これは明らかに受け入れられません。1 人のユーザーが負荷平均を 8 にまで上げることができ、2 人で使用すると、サイトを使用している間、その負荷平均が維持されます。何が起こっているのかを調べるために何ができるのだろうか?これをどのようにデバッグできるかについて、私は完全に途方に暮れています。(Tomcatコンテナ内ではなく、jrubyを介してレールアプリを実行すると、ローカルでは発生しません)

jruby アプリを検査して、そのような巨大なリソースをどのように使用している可能性があるかを調べる方法について誰かが教えてくれますか?

注意してください、私はこれを少し前に気付きましたが、一見ランダムに見えましたが、Rails 2.2.2 から 2.3.5 にアップグレードした後、私は常にそれを目にし、サイトを完全に使用できなくしています。

どこを見るべきかについてのヒントは大歓迎です。どこから始めればよいかさえわかりません。

4

1 に答える 1

0

Tomcat と他の何かとの間に予期しない通信がないことを確認してください。最初に次の場合にチェックします。

  • ActiveMQ ブローカーは、ネットワーク内の他のブローカーと通信しません。デフォルトでは、AMQ ブローカーは OpenWire 自動検出モードで起動します。
  • 一般に、JGroups/Multicasts はネットワーク内の何かと通信しません。

この不必要な負荷は、別のアプリケーションからのメッセージの処理が原因である可能性があります。

于 2010-02-27T11:30:25.797 に答える