JBOSS连接池合理设置min和max

连接池设置不合理可能导致的后果

连接池的MIN数和MAX数,看似很简单的两个参数,其实对于应用和数据库的影响,并不是那么的简单。我们先来看看连接数设置不合理可能产生的后果:

  1. 连接池MIN设置过小,应用业务量突增,或者启动时可能产生连接风暴
  2. 连接池MIN值设置过大,会造成资源的浪费,主要包括数据库和应用内存,连接数的浪费,同时连接池MIN值设置过大,也会导致连接被频繁的创建和销毁。这是由连接池的工作机制决定的。
  3. 连接池MAX值设置过大。在极端情况下,当应用发生异常时,会导致连接数被撑到MAX值,有可能导致数据库连接数被耗尽,从而导致正常的业务受到影响。当连接数被撑到MAX值,[......]

Read more

数据库压力测试工具tiobench,orion,lmbench,netperf

这篇文章主要介绍了Tiobench,Orion,Lmbench,netperf这4种压力测试工具的安装及简单使用,只是一个入门级的教程,大牛请绕过。

1.          Tiobench 基于文件系统的IO压力测试

下载:

http://sourceforge.net/projects/tiobench/files/tiobench/0.3.3/tiobench-0.3.3.tar.gz/download

解压缩: tar xzvf tiobench-0.3.3.tar.gz

再进入到tiobench-0.3.3目录中

Make

Make install[......]

Read more

JBOSS连接池inlist查询优化

部分同学可能不明白什么是in list的SQL,这里先说明一下,所谓in list的SQL就是指使用了in来进行查询,绑定变量个数不确认的SQL,如:

select * from test where id in (:1,:2,:3)

对于这一类的查询,由于in的查询条件中绑定变量个数的不同,会导致SQL版本变多,从而导致PreparedStatementCache的命中率下降。(因为JBOSS/oracle中都是以SQL文本完全一致来匹配PreparedStatementCache)。

因为PreparedStatementCache在MYSQL中没有作用(根本原因是MYSQL不支[......]

Read more

JBOSS连接池合理的设置PSCACHE

1.对于PSCache设置过大或过小的影响

为什么我们要合理的设置PSCache的值,这个值对于应用系统有怎样的影响呢?当然,之所以要把这个问题提出来,肯定是有原因的,在这个参数的设置问题上,我们是吃过亏的。所谓合理的设置,即这个值既不能设置太大,也不能设置太小。PSCache设置过小,可能导致PSCache命中率降低,最直观的影响,就是应用访问数据库延时增加,具体分析一下,主要有以下几方面的影响:

  1. 对于没有在PSCache中的SQL,每次需要在应用程序中新建PS对象。(PS对象的大小和具体的SQL有关,一般可以认为在几K~1MB之间,具体大小需要以JVM的内存DUMP为准。后面会详[......]

Read more

JBOSS连接池如何防止连接风暴

引言:为什么prefill=false会在启动的时候碰到连接风暴,本节结合JBOSS源代码的来分析这种情况产生的根本原因,最后给出几种方案来解决这种连接数突然飙升的问题。(prefill这个参数在jboss4.0.5版本以后才能够被支持)

连接风暴,听起来这个词很时髦,那么到底什么是连接风暴?在百度和google上搜索了下,都没有找到相关的解释。所谓连接风暴,我们也可以称之为访问风暴,这是在使用jboss默认参数prefill=false的情况下,大规模应用集群很容易碰到的问题。先来描述一个场景
在项目发布的过程中,我们需要重启应用,当应用启动的时候,经常会碰到各应用服务器的连接数异[......]

Read more

常见SQL性能优化

1 通过ROWID访问表–索引
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.

2 共享SQL语句–相同的sql放入缓存

3 选择最有效率的表名顺序(只在基于规则的优化器中有效)  最右边的表作为基础表(记录最少,效率最高)
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 drivi[......]

Read more