伙计们,我正在积极地将在 JBoss AS 5 上运行的应用程序迁移到 JBoss AS 7。
迁移后,我注意到数据库调用对性能造成了巨大影响。
我在 JBoss 5 上使用 ojdbc14 和一个池(最小 - 5 最大 - 100),它对我们来说工作得很好。
在 JBoss AS 7 中,我已将驱动程序作为模块安装。
我所有的查询都需要 10 倍的时间。例如,如果我在 JBoss AS 5 上查询需要 30 毫秒,那么在 JBoss AS 7 上需要 400-600 毫秒。
我已尝试使用以下配置中显示的两个驱动程序(ojdbc6、ojdbc14)
一个观察结果是,Linux 机器上的性能下降比 OS X 机器更明显。
供参考。我尝试在 Java 1.6 和 1.7 上运行 JBoss AS 7
我的应用程序本身包含:
- struts 2 前端(用于请求处理,不涉及 web ui)
- 后端的会话 Bean
- 用于批处理作业的 QuartzPlugin。
- 自定义 MBean
我努力了
- 降低和增加池大小
- 预填充 = 真假
- 在 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>