struts2+hibernate3.2+spring2.5+tomcat6.18+proxool9.1+mysql.5.1.37 +win2003
hibernate没有做任何优化,就是默认的让srping2.5来管理事务的.
做了一个注册登录的项目.这个项目是从第三方传用户数据和验证签名过来,我必须要判断用户过来以后,数据没有被修改,并且数据库里没有数据,才可以注册.
因为要用到大压力并发,所以做了很多压力测试,现在和大家分享一下.
在首先,我们并不有马上做数据库访问,注册等方面的压力测试,而是先准备把静态页面压力测试到1000以上.
也就是把Tomcat配置好,让它能处理这么大的并发页面.
具体可以见我下面的文章:
hi.baidu.com/%CD%F5%D7%D36%BA%C5/blog/item/ff0f9724ff375f21d4074237.html
并发压力测试到1000,很快就到了.具体配置在文章里有写到.
接下来,就是做注册登录页面了.具体的流程是这样的.
在第一次是用的proxool数据连接池.
在100的并发的时候,是很勉强的过去了.
We are already in the process of making 6 connections and the number of simultaneous
这个问题出现了.点击链接可以看到解决问题和方法.
提升到200的时候,就出现问题了.压力曲线很难看.
首先是这个问题,每次打开的连接数太小.更改了,还是提升不上去.主要问题卡在数据库.
数据库拿不到更大的连接数,前端页面就卡在数据库这里,全部卡死了.
基本上一个下午的反复配置,实际上都是无用功了.
于是项目组决定,更改连接方式.打断连接的最大问题,数据和前端页面的等待连接.让失败的数据快速返回失败,不要卡死后面的连接数据.不能卡死服务器.
于是在紧张的2天时间里,把ssh框架给引入进来了.让spring管理struts2的actioin类.也让spring解决hibernate的事
务.在配置struts2+hibernate3.2+spring2.5+tomcat6.18+proxool9.1+mysql.5.1.37里,
我吃尽了苦头,深深的理解了,这些框架没有根本了解带来的一些歪路.对于这些配置,我会再开一贴说明.因为网上关于这几个加起来的配置文章,大多是相互抄
的,没有根本的配置起来.或者说配置起来,不可用,老报错等.
改完了以后,做100的测试,基本上速度是相当的快.完全没有到测试的上限.
当然,这里也有很多好笑的.
比如我们当时开通了两台服务器,一台是测试的,一台是运行的.在同一个机房.可是网速好像起不来....
因为注册\登录\到首页的话, 这个首页就是2M的大小.100个并发,那可是200M的下载量.不可忽略网速的问题和硬盘的io问题.
在做100以上的时候,基本上就把js\css\图片给取消了,只做 注册\登录\到静态的首页.这个时间我们的测试服务器上的loadruner出了问题.测试人员说得重装. - -!汗过一个.我们没有那么多时间等.
于是到生产机上安装了loadruner就运行起来.虽然这样会影响真实的测试数据,不过更可以忽略网络一块的因素,来评估程序的稳定性了.
本机上,先挂300测试,很快就出现了
We are already in the process of making 6 connections and the number of simultaneous
这个错误,我开到100的,结果还是报 要101个链接.
再改大的时候,就出现 Communications link failure Last packet sent to the server was 0 ms ago.这个错误了.
网上很多都是说连接地址从localhost改成127.0.0.1就好了,我看了一下我的链接,没有错,没有问题....
也有的说是tomcat等待时间太长 wait_timeout
这个默认是8小时,过了就关闭了.可是我的是tomcat刚打开,没有这个道理的.
再分析,应该不是这问题 .
把mysql的最大链接数开大到600.再把proxool的最大链接数开到了500.还留100给其他的程序. - -!
再测试.....还是没有通过,发现很多错误都是不能打开数据库连接了.通过mysql admin查看,发现数据库的连接数量根本就没有上去.说明,不是数据库链接数问题.
再想想,是不是可能出现连接开始的时候,打开太小了,所以在测试的时候,数据库打开消耗时间.在并发的情况下,还要分内存和cpu去处理tomcat事务,这样响应不过来..于是把proxool的最小连接数开到300 proxool.minimum-connection-count="300"
,把proxool.prototype-count="50"
数据活跃数改到50
再开300的测试.通过,没有问题.
但是,不可能一开始就把数据库连接开到300吧.认真分析一下hibernate的原理.是有数据缓存的.而我每一次都是重启tomcat,再来测试,相
当于把hibernate的数据缓存给清掉了.根本就没有体现出hibernate的优势,在这里反而在注册查询的时候,降低了整个系统的性能.
于是,把proxool最小链接数再下调到100.从100个并发测试.好的,没有问题.
再调试到200并发.错了6个,还可以接受.
再调试到300并发.错了10个,还是可以接受.
再调试到400并发,没有错误.
再调试到500并发,没有错误...
看看数据连接数,也上来了.
问题就是出现在这里.
如果你的网站,一上来,并发量就很大的话,那你一定要把最小链接数和保持数据链接活跃数加大.
保证在瞬时的并发时,你的服务器可以处理过来.
如果你的网站访问量是慢慢起来的话,那这两个的初始值都可以设置小一点.
给出大家数据库的配置. 这个配置是放在 tomcat/conf/context.xml下的.通过jndi来调用的.至于为什么要用tomcat来管理.在关于s2 s2.5 h3.2 里会分析.
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
factory="org.logicalcobwebs.proxool.ProxoolDataSource"
proxool.alias="DBPool"
user="root"
password="root"
delegateProperties="foo=bar"
proxool.jndi-name="mysqljndi"
proxool.driver-url="jdbc:mysql://127.0.0.1:3306/webgame?characterEncoding=utf-8"
proxool.driver-class="com.mysql.jdbc.Driver"
proxool.house-keeping-sleep-time="40000"
proxool.house-keeping-test-sql="SELECT ''"
proxool.maximum-connection-count="500"
proxool.minimum-connection-count="100"
proxool.maximum-connection-lifetime="18000000"
proxool.simultaneous-build-throttle="100"
proxool.recently-started-threshold="40000"
proxool.overload-without-refusal-lifetime="50000"
proxool.maximum-active-time="60000"
proxool.verbose="true"
proxool.trace="true"
proxool.fatal-sql-exception="Fatal error"
proxool.prototype-count="50"
proxool.statistics-log-level="DEBUG"
/>
大家有什么建议的,欢迎拍砖.
分享到:
相关推荐
tomcat 最大并发数 并发量 tomcat 最大并发连接数 acceptCount不能说只要大于acceptCount的连接就一定被拒绝!
tomcat 高并发 1000每秒 服务器优化 高性能 tomcat 高并发 1000每秒 服务器优化 高性能
tomcat并发量详解 tomcat并发连接数详解
apache、tomcat整合及并发测试、及相关mod_jk文件下载、包含mod_jk-apache-2.2.4.so文件。httpd.conf/http_vhosts.conf/workers.properties配置
假如有四个tomcat,每个tomcat的并发数为30,用一个tomcat专门负责url跳转。因为第一个tomcat 只负责跳转所以他的并发瓶颈可以忽略。 那么tomcat A+B+C 的并发数就是90了。 内附源码 只给你一种思想。O(∩_∩)O哈哈...
Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? Tomcat运行模式 Tomcat的运行模式有3种。 1.bio模式 默认的模式,性能非常...
调整并修改Tomcat的并发线程. 扩大tomcat的并发数,并支持到5000+
经验证的tomcat高并发和集群配置的server.xml,在生产上已经使用的。不过需要注意context.xml中需要这样子配置: <Context distributable="true" useHttpOnly="false">
Tomcat详细配置和测试介绍 介绍如何配置Tomcat并测试配置是否正确
NULL 博文链接:https://zepeng06630925.iteye.com/blog/907364
tomcat 启动优化和并发并发优化配置
Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程 Tomcat jndi 配置数据源过程
Tomcat的三种模式及并发优化Tomcat的三种模式及并发优化
为了更明确怎样开发出高并发程序,本人写了一个测试例子去体验下 C3P0 tomcatJdbc dbcp 他们的并发能力。采用乐观锁控制oracle数据并发访问。测试结果表明在 c3p0 和dbcp 都能执行完4800以下并发线程访问。c3p0 比较...
1.Tomcat优化配置 (1)更改Tomcat的catalina.bat 将java变成server模式,增大jvm的内存,在文件开始位置增加 setJAVA_OPTS=-server -Xms1024m -Xmx2048m -Xss512K -XX:...在 中 增加如下配置(亲测10秒内2000并发没
一个用eclipse结合tomcat工具,进行网页登录测试的demo。核心在于struct-config.xml.
指导方法,主要详细描述如何进行一台服务器上执行多个TOMCAT的方法
详细介绍tomcat远程配置,debug测试
tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...
Tomcat8 我已经配置好了jar包,实现多Tomcatsession同步。