JBoss AS 7性能调优(二)

标签: jboss as 性能调优 | 发表时间:2014-05-04 05:19 | 作者:wilbertzhou
出处:http://blog.csdn.net

原文: http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning/page-2

调优数据库连接池

建立与DBMS的JDBC连接过程可能是相当缓慢的。如果您的应用程序需要反复打开和关闭数据库连接,这可以成为一个显著的性能问题。在JBoss AS中数据源的连接池提供了一种有效的解决该问题的方法。

要强调的是,当客户端关闭一个数据源的连接时,该连接返回到池中,这样可用于其它的客户端,因此,连接本身并没有关闭。打开和关闭池管理的连接的成本可以以纳秒来衡量,所以它对性能的影响无关紧要。

在下面的例子中,我们将强调在第三章讲解的数据源配置,使用连接池配置来提供企业服务:

<datasource jndi-name="MySqlDS" pool-name="MySqlDS_Pool"

    enabled="true" jta="true" use-java-context="true" use-ccm="true">

    <connection-url>

        jdbc:mysql://localhost:3306/MyDB

    </connection-url>

    <driver>mysql</driver>

    <pool>

        <min-pool-size>10</min-pool-size>

        <max-pool-size>30</max-pool-size>

        <prefill>true</prefill>

    </pool>

    <timeout>

        <blocking-timeout-millis>30000</blocking-timeout-millis>

        <idle-timeout-minutes>5</idle-timeout-minutes>

    </timeout>

</datasource>

在这里,我们配置了10个连接的初始池的容量,最大可以增长到30。正如你可以从下面的MySQL管理控制台中看到的,当你设置pre-fill元素为true,则应用服务器试图在启动时预先创建连接。这可能会产生性能损失,特别是如果连接的获取很昂贵的时候。

如果应用服务器因为连接池的连接都在使用,而不能获得更多的连接,那么它会一直等待直到阻塞超时(blocking-timeout-millis),这时会抛出一个异常给客户端。

同时,如果连接空闲超过了参数idle-timeout-minute设置的时间,则他们被迫返回到池中。

调整池大小

要确定合适的池大小,你需要监视数据库连接的使用,这可以通过几种方式来完成。使用命令行,您可以监视数据源的运行时性能。下面是一个将在第4章讲述的应用程序的示例:

[standalone@localhost:9999 /]/subsystem=datasources/data-source="java:/MySqlDS":read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"ActiveCount" => "10",
"AvailableCount" => "29",
"AverageBlockingTime" => "0",
"AverageCreationTime" => "56",
"CreatedCount" => "10",
"DestroyedCount" => "0",
"MaxCreationTime" => "320",
"MaxUsedCount" => "5",
"MaxWaitCount" => "0",
"MaxWaitTime" => "1",
. . . .
}
}

此命令的输出有点长,然而最有趣的属性是输出的开头部分:尤其是 ActiveCount,它显示了当前活动的连接数, MaxUsedCount是由应用程序使用的连接的峰值数。

注意:如果您设置了预初始化连接池,如图所示前面的部分,这些连接将一直处于活跃状态。这可能造成误解,导致你认为他们一直很忙。

如果您无法使用CLI或只是你要好好利用你的DBA认证,有一些有效的可选方法:首先,最显而易见的是监视数据库会话。下表列出了一些有用的命令,这些命令可以用来跟踪在不同数据库上的活动的连接:

数据库

命令/ 表

Oracle

查询V$SESSION视图

MySQL

使用命令SHOW FULL PROCESSLIST

Postgre-SQL

查询PG_STAT_ACTIVITY表

另一种选择是使用像P6Spy的工具,它充当JDBC代理的驱动。 (我博客关于它的文章在 这里))。

一旦你找到应用程序使用连接的峰值,设置至少高出25-30%作为最大值。不要担心设置的最大值过高,因为如果你不需要这么多的连接,池将自动收缩,前提是你已经设置了idle-timeout-minutes。

另一方面,服务器日志在帮助你检查连接池运行问题时,仍然是一个非常宝贵手段。例如,如果你在你的服务器日志中看到这个异常,这说明你需要你去看看连接池是否正常:

21:57:57,781 ERROR [stderr] (http-executor-threads - 7) Caused by: javax.resource.ResourceException: IJ000655: No managed connections available within configured blocking timeout (30000 [ms])
21:57:57,782 ERROR [stderr] (http-executor-threads - 7)         at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection

作者:wilbertzhou 发表于2014-5-3 21:19:02 原文链接
阅读:85 评论:0 查看评论

相关 [jboss as 性能调优] 推荐:

JBoss AS 7性能调优(四)

- - CSDN博客系统运维推荐文章
 原文: http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning/page-5. 记录日志是每一个应用程序的一个重要任务,默认的配置一般只适合开发,但不适用于生产环境. 您切换到生产环境时需要考虑的关键要素是:.

JBoss AS 7性能调优(二)

- - CSDN博客系统运维推荐文章
建立与DBMS的JDBC连接过程可能是相当缓慢的. 如果您的应用程序需要反复打开和关闭数据库连接,这可以成为一个显著的性能问题. 在JBoss AS中数据源的连接池提供了一种有效的解决该问题的方法. 要强调的是,当客户端关闭一个数据源的连接时,该连接返回到池中,这样可用于其它的客户端,因此,连接本身并没有关闭.

JBoss AS 7性能调优 (一)

- - CSDN博客系统运维推荐文章
原文: http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning. 虽然许多架构师和软件工程师都同意,约70-80%的应用程序的性能取决于应用程序本身的编码,配置不当的服务器环境可以显著影响你的用户体验,并最终影响到你的应用程序性能.

JBoss AS 7性能调优(三)

- - CSDN博客系统运维推荐文章
原文: http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning/page-4. 还有很多需要调优的地方最终影响Web服务器的性能,其中一个最重要的因素是调优HTTP线程池设置,以匹配web请求的负载.

\(^_^)/ Jboss资料

- - 编程语言 - ITeye博客
官网: http://www.jboss.org/. 下载: http://www.jboss.org/jbossas/downloads/. Jboss博客: http://jbosscn.iteye.com/. 中赢网Jboss: http://www.chinawin.net/tag/jboss/.

JBoss发布Hibernate 4.0

- - InfoQ cn
近日, JBoss发布了流行的对象/关系(O/R)映射框架 Hibernate. Hibernate 4主要的新特性如下所示:. 引入了“Services”API. 提供了更棒的日志,支持 i18n与消息编码(通过JBoss Logging而非 slf4j). 为 OSGi支持做好了准备.

[译]jboss漏洞利用

- - 互联网 - ITeye博客
原文地址:http://resources.infosecinstitute.com/jboss-exploitation/. JBoss Application Server是一个基于Jave EE的web应用服务器. 如果Jboss没有正确配置,它会允许攻击者进行各种恶意攻击. 由于JMX console可以通过端口8080远程访问,攻击者和恶意用户可以通过使用Jboss console中的DeploymentScanner功能部署他们自己的WAR(web archive)文件或shell脚本.

HBase性能调优

- - 学着站在巨人的肩膀上
我们经常看到一些文章吹嘘某产品如何如何快,如何如何强,而自己测试时却不如描述的一些数据. 其实原因可能在于你还不是真正理解其内部结构,对于其性能调优方法不够了解. 本文转自TaoBao的Ken Wu同学的博客,是目前看到比较完整的HBase调优文章. 原文链接:HBase性能调优. 因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.

hbase性能调优

- - 数据库 - ITeye博客
   1)、hbase.regionserver.handler.count:该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB,比如大的put、使用缓存的scans)的时候,如果该值设置过大则会占用过多的内存,导致频繁的GC,或者出现OutOfMemory,因此该值不是越大越好.

Hadoop性能调优

- - 开源软件 - ITeye博客
是否对任务进行profiling,调用java内置的profile功能,打出相关性能信息. 对几个map或reduce进行profiling. 非常影响速度,建议在小数据量上尝试. 1表示不reuse,-1表示无限reuse,其他数值表示每个jvm reuse次数. reuse的时候,map结束时不会释放内存.