`
wangzi6hao
  • 浏览: 213871 次
  • 性别: Icon_minigender_1
  • 来自: sdf
社区版块
存档分类
最新评论

tomcat 500并发压力测试过程

阅读更多

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性能的测试

    1. **压力测试工具选择**:为了准确评估Tomcat的性能,我们需要使用压力测试工具模拟多用户并发访问。这些工具通常通过录制或编写脚本来重复请求页面,例如Apache Benchmark和JMeter。选择工具时,要确保它们支持Web...

    nginx+tomcat测试报告.doc

    3.2 Nginx+TOMCAT测试:部署Nginx作为反向代理,配置后端指向单个Tomcat服务器,重复相同的压力测试,观察性能变化。 3.3 多TOMCAT测试:在Nginx后端添加多个Tomcat实例,再次进行压力测试,评估负载均衡效果及整体...

    tomcat性能测试

    为了有效地进行Tomcat服务器的性能测试,需要借助专业的压力测试工具。这些工具通常通过模拟大量并发用户的访问行为,来测试服务器的响应时间和稳定性。目前市面上存在多种性能测试工具,包括开源工具如Apache ...

    优化提高tomcat性能.Tomcat参数调优

    使用`jmeter`进行压力测试,模拟高并发场景,找出性能瓶颈,针对性地进行调优。`Tomcat性能优化,学会薪水翻倍-jmeter测试java -jar --设置参数运行的程序.url`提供了更多关于如何使用JMeter进行性能测试的资源。 ...

    系统压力测试报告.doc

    本报告详细记录了针对XX项目进行的压力测试过程和结果,旨在了解系统在不同并发用户数下的表现。 1. **测试目的** - 主要目标是模拟真实用户在实际使用环境中的系统负载,测试系统的性能、可靠性和稳定性。 - ...

    nginx负载均衡代理多个tomcat搭建实例过程

    "Nginx负载均衡代理多个Tomcat搭建实例过程" 一、Nginx安装与配置 Nginx是一款轻量级的Web...Nginx负载均衡代理多个Tomcat搭建实例过程需要完成Nginx和Tomcat的安装和配置,配置Nginx负载均衡,并进行压力测试。

    (完整版)系统压力测试报告.docx

    此报告详细记录了某次针对xx项目的压力测试过程,旨在模拟真实用户环境,检测系统在不同负载下的表现。 一、测试目的 测试的主要目标是测试xx项目的性能、可靠性和稳定性。通过LoadRunner这一性能测试工具,模拟...

    性能压力测试报告.doc

    本文档是关于新兴人员就创平台工程的压力测试报告,旨在深入理解该平台在面对大量并发用户时的性能表现。 **第一章 压力测试概述** 1.1 压力测试 压力测试是一种性能测试方法,旨在揭示系统在接近或超过其设计容量...

    tomcat性能调整

    以下将详细介绍Tomcat性能调整的各个方面,包括测量Web服务器性能、压力测试工具的选择和使用,以及外部环境和Tomcat自身的调整。 1. **测量Web服务器性能** - 评估性能指标:性能测试的目标是了解服务器在不同...

    Apache和Tomcat集群测试案例

    而“工具”可能是指用于监控和管理集群状态的工具,如JMeter(压力测试)、Nagios(系统监控)等。 6. **测试环境**:在搭建好集群后,我们需要通过模拟高并发请求来验证其性能和稳定性。可以使用Apache JMeter或...

    用JMeter来测试Tomcat的性能.rar

    在IT行业中,性能测试是确保应用系统稳定性和可扩展性的重要环节。对于Web应用程序,Tomcat作为常用的Java Servlet容器,其性能表现直接影响到整体服务的...正确配置和使用JMeter,将使测试过程更加高效且具有针对性。

    tomcat-redis依赖jar包

    总结来说,"tomcat-redis依赖jar包"涉及到的是将Tomcat应用服务器与Redis缓存系统整合的过程,包括连接器选择、配置、缓存策略、性能优化、安全措施以及监控与故障排查等多个方面。正确地集成和使用这些jar包,能够...

    Linux版本的tomcat和jdk

    同时,使用像JMeter这样的工具进行压力测试,可以帮助你评估系统的负载能力和稳定性。 总之,Linux下的Tomcat 7和JDK 1.7组合是Java Web开发的基础,理解它们的工作原理、安装配置以及优化方法,对于提升开发和运维...

    tomcat8.5.32

    此外,还可以结合使用其他工具,如Apache JMeter进行压力测试,找出性能瓶颈。 在实际使用中,Apache Tomcat 8.5.32通常与其他Java应用服务器或框架(如Spring Boot)配合使用,构建复杂的Web应用。通过理解并掌握...

    CentOS7 环境下Tomcat和Nginx 安全配置操作手册

    - 使用工具(如`ab`或`JMeter`)进行压力测试,确保服务器能够承受预期的负载。 - 安装和配置日志监控工具,如Logrotate,定期清理和备份日志,便于故障排查。 完成上述步骤后,你将拥有一个在CentOS 7上运行的、...

    tomcat极限优化

    3. 性能测试:通过工具如JMeter进行压力测试,找出性能瓶颈。 七、安全优化 1. 定期更新Tomcat版本,修复已知安全漏洞。 2. 使用SSL/TLS加密通信,保障数据传输安全。 3. 限制不必要的网络访问,如关闭未使用的端口...

Global site tag (gtag.js) - Google Analytics