---------------------相关配置----------------
Srping 连接池配置:
crmmaxActive=200
crmmaxIdle=20
crmminIdle=1
crminitialSize=20数据库最大允许连接数300-----------------------------------------------目前并发100个用户时,查询和保存速度相当慢,
例如:select count(*) from tableName where 主键=‘**’;这样一条查询语句也要花30秒左右(单用户只需要几十毫秒)。
查询的主键都已经有建立索引了,而且压力测试的同时,使用PL/SQL 进行查询时,速度正常,不会出现几十秒的情况;另外,
数据库与客户端是在同一局域网,应该也不是网速问题.
请问会是什么原因引起的?
Srping 连接池配置:
crmmaxActive=200
crmmaxIdle=20
crmminIdle=1
crminitialSize=20数据库最大允许连接数300-----------------------------------------------目前并发100个用户时,查询和保存速度相当慢,
例如:select count(*) from tableName where 主键=‘**’;这样一条查询语句也要花30秒左右(单用户只需要几十毫秒)。
查询的主键都已经有建立索引了,而且压力测试的同时,使用PL/SQL 进行查询时,速度正常,不会出现几十秒的情况;另外,
数据库与客户端是在同一局域网,应该也不是网速问题.
请问会是什么原因引起的?
解决方案 »
- javamail 求高手
- 关于myeclipse下面weblogic9的配置问题
- hibernate
- java 4中框架组合有什么有点和缺点?
- org.hibernate.hql.ast.QuerySyntaxException: TopicdetailId is not mapped.
- 求web service 压力测试方法或文章
- [求助]这个问题没见过要怎么解决?
- JDBC处理海量数据问题
- 我的IE为什么总是自动关闭。
- 菜鸟小问:XML用什么工具编写?
- 如何通过java程序得到weblogic的线程数量和总线程数(也就是相关线程池信息)
- FCKeditor 在linux 上不能上传图片!!!!
weblogic?tomcat?Jboss?怀疑是WAS撑不住
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>${crmDatabase}</value>
</property>
<property name="username">
<value>${crmUser}</value>
</property>
<property name="password">
<value>${crmPasswd}</value>
</property>
<property name="maxActive">
<value>${crmmaxActive}</value>
</property>
<property name="maxIdle">
<value>${crmmaxIdle}</value>
</property>
<property name="minIdle">
<value>${crmminIdle}</value>
</property>
<property name="initialSize">
<value>${crminitialSize}</value>
</property> <property name="accessToUnderlyingConnectionAllowed">
<value>true</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
<property name="testWhileIdle">
<value>true</value>
</property>
<property name="validationQuery">
<value>SELECT 1 FROM DUAL</value>
</property>
</bean>
跟这个应该没有多大关系。你可以在程序代码里面详细的log一下,看看application服务器得到请求和返回请求究竟是哪一步慢
如果实时性要求比较高,应该改变你的架构,考虑用内存等其他方案处理,而不是直接读取数据库。
另外,lz没说清楚,是开始时慢还是一直都慢,如果是开始慢那是正常的,因为是生成连接池慢,Srping的特性决定的,没办法改变
怎么跟踪getconnect?开始会慢,慢慢恢复,不过随便并发压力的增加,速度会开始慢,直到超时
crmmaxIdle=20
crmminIdle=1
crminitialSize=20这两个20都改成100试试看
修改后,情况还是一样按您说的
crmmaxActive=200
crmmaxIdle=100
crmminIdle=1
crminitialSize=100100并发用户的情况下,压力测试结果:Statistics Summary Maximum Running Vusers: 100
Total Throughput (bytes): 427,545
Average Throughput (bytes/second): 1,188
Total Hits: 914
Average Hits per Second: 2.539 View HTTP Responses Summary Transaction Summary Transactions: Total Passed: 914 Total Failed: 0 Total Stopped: 99 Average Response Time Transaction Name Minimum Average Maximum Std. Deviation 90 Percent Pass Fail Stop
XX 6.904 29.245 83.066 16.328 52.826 144 0 23
XX 1.037 14.904 55.772 11.687 32.756 167 0 14
XX 1.89 27.359 88.353 17.5 52.179 193 0 15
XX 0.372 13.537 59.525 10.803 27.634 181 0 12
XX 0.474 8.376 32.764 7.211 18.109 109 0 11
XX 7.446 35.854 98.462 19.947 68.779 120 0 24
PL/SQL查询连接数情况
SQL> select count(*) from v$process;
COUNT(*)
----------
27SQL> select count(*) from v$session where machine='DJ852J2X';
COUNT(*)
----------
242
1.应用服务器机子太滥,换好机子并采用集群方式
2.数据库机子更滥,CPU一下就撑爆,后来换了台机子
1.数据库存储过程效率比较低,后来做了优化。结果:
并发300以上,查询都只有2ms