3

jBoss EAP6.0で実行されているJSF2を使用してサイトを開発しましたが、本番環境で問題が発生しています。基本的に、一定期間後(現在のユーザーレベルは約24時間)、アプリケーションによってサーバーの平均負荷が100になり、サーバーの種類が応答を停止します(実際には応答が停止しません。応答に時間がかかりすぎるため、実際には同じです)

ここで、jBossを停止して再起動すると、アプリケーションは正常に動作します(したがって、負荷の問題ではありませんが、時間の経過とともに発生する問題が多いほど、負荷が高くなるほど速くなります)。

これをテストするために、基本的にログインページと、ボタンでテキストをレンダリングする非常にシンプルなページと、テキストをレンダリングするだけのシンプルなポップアップを備えたシンプルなアプリケーション(単なる戦争)を作成しました。

jMeter(別のマシンで実行)を使用して、この単純なアプリケーションが100の同時スレッド(またはjMeterで許可されている限り同時)でヒットすることを強調しています。i5と8GBのRAM(サーバーに4GBを使用)を搭載したMacで実行されているjBoss EAPは、負荷平均を50にエスカレートして上昇を続ける前に約20分続きます。100ではなく200スレッドを使用します。

もう1つ気付いたのは、新しいjBossインスタンスでテストを開始すると、負荷平均がエスカレートするのにX時間かかるということです。テストを開始すると、負荷平均を50まで上げてから、そのテストを停止します。 jBossを再起動せずに新しいテストを開始すると、負荷平均が数秒で再び50に急上昇します。

Restfulサービスを使用して問題なく(そして負荷平均スパイクなしで)サービスにストレスをかけることができるので、これは一般的なjBossの問題ではなく、JSFの問題であると推測しています。

参照としてVisualVMのいくつかのイメージをアップロードしています(GCが定期的に実行され、正常に表示され、CPUと負荷の平均エスカレーションの両方が抑制されていることがわかります)。ライブラリバージョンのpom.xmlのコンテンツ。

だから私の質問は基本的に誰かがこの問題に遭遇したことがありますか?これは通常の動作ですか?誰かがこれが起こった理由を考えることができますか?(RedHatサポート付きのチケットも作成しましたが、コミュニティの誰かがすでにこの問題に直面しているか、何が起こっているのかを知る方法を見つけるのに役立つ可能性があることを期待しています)

興味があれば、サンプルアプリケーションのコードとjMeterテストスクリプトを提供できます。

TIA!

100スレッドの平均負荷:

100スレッドの平均負荷

100スレッドのCPU: 100スレッドのCPU-成長が止まらないことに注意してください

100スレッドのメモリ: 100スレッドのメモリ-GCはそれを正しく行うようです

構成: 構成

jBossを停止せずに平均開始テストを再度ロードします。

ここに画像の説明を入力してください

最後に、pom.xmlの依存関係:

 <properties>
        <project.version>1.0</project.version>
    <codi.version>1.0.5</codi.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>
        <jboss.home>${env.JBOSS_HOME}</jboss.home>
        <jboss.domain>default</jboss.domain>
        <arquillian.version>1.0.0.CR7</arquillian.version>
        <slf4j.version>1.6.1</slf4j.version>
        <weld.version>1.1.8.Final</weld.version>
        <seam.version>3.1.0.Final</seam.version>
        <rest.version>2.3.3.Final</rest.version>
        <version.arquillian_core>1.0.0.CR7</version.arquillian_core>
        <version.jbossas_7>7.1.0.Final</version.jbossas_7>
        <jboss-javaee6-spec.version>1.0.0.Final</jboss-javaee6-spec.version>
        <org.richfaces.bom.version>4.0.0.Final</org.richfaces.bom.version>
    </properties>

    <modelVersion>4.0.0</modelVersion>
    <build>
        <finalName>foo</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <!-- PRoject Dependencies -->
        <dependency>
            <groupId>ar.com.easytech</groupId>
            <artifactId>easyFaces-core</artifactId>
            <version>1.1</version>
        </dependency>

        <!-- Web Dependencies -->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <scope>compile</scope>
            <version>1.6.2</version>
        </dependency>
        <!-- Seam -->
        <dependency>
            <groupId>org.jboss.seam.security</groupId>
            <artifactId>seam-security</artifactId>
            <scope>compile</scope>
            <version>${seam.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
            <artifactId>myfaces-extcdi-bundle-jsf20</artifactId>
            <version>${codi.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.ocpsoft</groupId>
            <artifactId>prettyfaces-jsf2</artifactId>
            <scope>compile</scope>
            <version>3.3.2</version>
        </dependency>
        <!-- PDF -->
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>fop</artifactId>
            <version>1.0</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>xmlgraphics-commons</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>avalon-framework</groupId>
            <artifactId>avalon-framework</artifactId>
            <version>4.1.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons.io</groupId>
            <artifactId>commons.io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-bridge</artifactId>
        <version>1.6</version>
    </dependency>
    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-css</artifactId>
        <version>1.6</version>
    </dependency>
    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-util</artifactId>
        <version>1.6</version>
    </dependency>
    <dependency>
        <groupId>apache-xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.9.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.2.5</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

編集

maple_shaftが提案したように、これをGlassfishでテストしてまったく異なる結果が得られたので、Xmx XmsとNewSizeを変更するだけでベースのGlassfishサーバーを構成し、200スレッドでテストを実行しました。負荷の平均は、6を超えて急上昇することはありませんでした(実際には、約5のままでした)負荷のコンフォートゾーンだと思います)

結果の画像を追加し、それに応じてRHサポートケースを更新します

負荷平均 負荷平均

CPU ここに画像の説明を入力してください

メモリー ここに画像の説明を入力してください

4

1 に答える 1

1

バージョン 2.1.21 までの Mojarra を使用するアプリケーションではパフォーマンスの問題があったため、mojara の実装を myfaces に変更できますか。詳細については、 http://blog.oio.de/2013/05/06/jsf-performance-tuning/を参照してください。

于 2013-05-13T09:27:24.623 に答える