Jboss 7.1数据库查询挂起

时间:2012-12-24 02:47:24

标签: jndi jboss7.x

我之前使用的是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>

请帮忙。

1 个答案:

答案 0 :(得分:0)

虽然我没有明确解决您的问题的方法,但您可以采取以下措施来进一步解决问题:

  • 监控数据库性能和吞吐量。既然你提到问题只发生在生产上,也许它与负载有关。也许你的交易只是长时间锁定了太多的对象,因此当使用负载开始达到峰值时,下一个交易必须等到先前的交易完成后才开始。
  • 监控服务器硬件,下次发生“挂起”时,请注意CPU /内存/磁盘使用率是否达到峰值
  • 观察“挂起”期间数据库中发生的其他活动,如果任何繁重的工作完成,可能会显着减慢您的应用程序
  • 针对类似的生产负载在您的测试/暂存环境中执行负载测试。如果您可以重现“悬挂”症状,那么您的代码可能存在可扩展性问题