皆さん、JBoss AS 5 で実行されているアプリケーションを JBoss AS 7 に移行することに積極的に取り組んでいます。
移行後、データベース呼び出しのパフォーマンスが大幅に低下していることに気付きました。
JBoss 5 でプール (最小 - 5 最大 - 100) で ojdbc14 を使用していましたが、かなりうまく機能していました。
JBoss AS 7 では、ドライバーをモジュールとしてインストールしました。
すべてのクエリに 10 倍の時間がかかっています。たとえば、JBoss AS 5 でクエリに 30 ミリ秒かかった場合、JBoss AS 7 では 400 ~ 600 ミリ秒かかっています。
以下の構成に示されている両方のドライバーで試しました(ojdbc6、ojdbc14)
観察によると、パフォーマンスの低下は、OS X ボックスよりも Linux ボックス マシンの方が顕著です。
ご参考までに。Java 1.6 と 1.7 の両方で JBoss AS 7 を実行してみました
私のアプリケーション自体には以下が含まれています:
- struts 2 フロントエンド (リクエスト処理に使用され、Web UI は関係ありません)
- バックエンドのセッション Bean
- バッチジョブ用の QuartzPlugin。
- カスタム MBean
私が試してみました
- プールサイズの増減
- prefill = true および false
- ojdbc6 と ojdbc14 の切り替え
スタンドアロン.xml
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jta="true" jndi-name="java:jboss/datasources/MyDS" pool-name="hive-datasource" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:oracle:thin:@host:port:service</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<connection-property name="defaultRowPrefetch">
50
</connection-property>
<driver>oracle14</driver>
<pool>
<min-pool-size>20</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>theusername</user-name>
<password>thepassword</password>
</security>
<validation>
<check-valid-connection-sql>select * from dual</check-valid-connection-sql>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<use-fast-fail>false</use-fast-fail>
<exception-sorter class-name="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter"/>
</validation>
<timeout>
<set-tx-query-timeout>true</set-tx-query-timeout>
<blocking-timeout-millis>300000</blocking-timeout-millis>
<idle-timeout-minutes>30</idle-timeout-minutes>
</timeout>
<statement>
<track-statements>false</track-statements>
<prepared-statement-cache-size>0</prepared-statement-cache-size>
</statement>
</datasource>
<drivers>
<driver name="oracle6" module="com.oracle.ojdbc6">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
<driver name="oracle14" module="com.oracle.ojdbc14">
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>
</drivers>
</datasources>
</subsystem>