2

以前は Jboss 4.2.2 を使用していましたが、最近 Linux マシンに Jboss 7.1 をインストールしました。ステージング サーバーでは正常に動作しますが、本番環境では奇妙な問題に直面しています。

起動してから数時間後、データベース クエリがハングし始めます。結果がデータベースから返されません。私はstandalone.xmlで定義されたJNDIを使用しています。

    <subsystem xmlns="urn:jboss:domain:datasources:1.0">
        <datasources>
            <datasource jndi-name="java:/MyDatabaseDS" pool-name="MyDatabaseDS" enabled="true" use-java-context="true">
                <connection-url>jdbc:mysql://host:3306/database?zeroDateTimeBehavior=convertToNull&amp;cacheServerConfiguration=true&amp;useConfigs=maxPerformance</connection-url>
                <driver>mysql</driver>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                    <prefill>true</prefill>
                </pool>
                <security>
                    <user-name>user_name</user-name>
                    <password>password</password>
                </security>
                <timeout>
                    <blocking-timeout-millis>50000</blocking-timeout-millis>
                    <idle-timeout-minutes>5</idle-timeout-minutes>
                </timeout>
            </datasource>
            <drivers>
                <driver name="mysql" module="com.mysql">
                    <xa-datasource-class>com.mysql.jdbc.Driver</xa-datasource-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>

助けてください。

4

1 に答える 1

0

あなたの問題に対する決定的な解決策はありませんが、問題をさらに特定するためにできることは次のとおりです。

  • データベースのパフォーマンスとスループットを監視します。問題は本番環境でのみ発生すると述べているため、負荷に関連している可能性があります。おそらく、トランザクションがあまりにも多くのオブジェクトを長時間排他的にロックしているため、使用量の負荷がピークに達し始めると、次のトランザクションは前のトランザクションが最初に終了するまで待機する必要があります
  • サーバーのハードウェアを監視し、次に「ハング」が発生したときに CPU / メモリ / ディスクの使用率が急上昇した場合に注意する
  • 「ハング」中にデータベースで発生する他のアクティビティを観察します。負荷の高い作業が行われた場合、アプリの速度が大幅に低下する可能性があります
  • テスト/ステージング環境で、同様の本番負荷に対して負荷テストを実行します。「ハング」の症状を再現できる場合は、コードにスケーラビリティの問題がある可能性があります
于 2013-01-03T05:58:23.747 に答える