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 回答