`
captain
  • 浏览: 135178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

小小困惑:各位在公司都是如何做稳定性测试的?

阅读更多
  公司产品在做验收,压力、负载测试全部通过了,目前在做稳定性测试,计划是让200人(分属不同的用户组,做不同的操作)负载不间断运行200小时,产品用的是公司内部的标签库+spring2.5+struts1.2.9+hibernate3.3,ehcache作为二级查询缓存,默认使用apache的dbcp连接池,但经测试后十分不稳定,换c3p0后效果好些,但是运行20小时左右就持续抛出jdbc fails等异常,接着出现out of memory。。。最后无奈把连接池切换到proxool,
具体配置如下
	 <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
    <property name="driver">
      <value>com.mysql.jdbc.Driver</value>
    </property>
    <property name="driverUrl">
      <value>${jdbc.url}</value>
    </property>
    <property name="user">
      <value>cap</value>
    </property>
    <property name="password">
      <value>cap</value>
    </property>
    <property name="alias">
      <value>dbpool</value>
    </property>
    <property name="prototypeCount">
      <value>5</value>
    </property>
    <property name="maximumConnectionCount">
      <value>100</value>
    </property>
    <property name="minimumConnectionCount">
      <value>10</value>
    </property>
    <property name="trace">
      <value>true</value>
    </property>
    <property name="verbose">
      <value>true</value>
    </property>

情况开始好转,然而好景不长,系统稳定运行了96小时后,开始抛出一下异常:
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
        at java.lang.Thread.run(Thread.java:595)
10528328 [http-8080-Processor352] ERROR org.hibernate.transaction.JDBCTransaction - JDBC begin failed
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: Software caused connection abort: socket write error

STACKTRACE:

java.net.SocketException: Software caused connection abort: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3250)
        at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5395)
        at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:162)
        at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
        at $java.io.Serializable$$EnhancerByProxool$$4c8217cb.setAutoCommit(<generated>)
        at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
        at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:558)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTra
nsactionManager.java:377)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(Transaction
AspectSupport.java:263)
** END NESTED EXCEPTION **



Last packet sent to the server was 0 ms ago.
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2759)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3250)
        at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5395)
        at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:162)
        at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
        at $java.io.Serializable$$EnhancerByProxool$$4c8217cb.setAutoCommit(<generated>)
        at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91)
        at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:558)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTra
nsactionManager.java:377)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(Transaction
AspectSupport.java:263)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)

        at java.lang.Thread.run(Thread.java:595)
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null

利用proxool提供的监控工具,几百万个事务全部正常执行,loadrunner的事务也全部正常,没有任何失败和错误的事务,这下我突然间没辙了,tomcat的jvm参数,连接池参数,我全设置过了,也排除了内存泄漏和连接池没释放的情况,我的困惑有下:
1.产生这样的异常还会有哪些原因呢?
2.各位在对项目或者产品进行稳定性测试的时候,真的都做到后台不报出任何异常?
分享到:
评论
5 楼 timerri 2008-11-11  
连接被断了,抛出异常是正常的。

问题在于,你的程序中没有处理这种可能出现的异常。
4 楼 MarkDong 2008-11-11  
连接池有个检测连接是否可用的SQL语句的配置,你配上那个试试
3 楼 sdh5724 2008-11-10  
1。 C3P0没有问题, 我做过测试。
2。 我记得MYSQL对连接时间有定义的, 一个连接使用多少时间后, 会被自动的断开。那么, 肯定会有异常抛出来。  看你怎么看这个问题了。
3。 OUTOFMEORY的时候, 把HEAP拿出来, 这个可以使用工具分析。不过, 我还是觉得你的程序有问题。 dbcp问题是很大, 我看到不少BUG报告, 包括我们公司的人员说的。
2 楼 bigsaturn 2008-11-10  
我也关注一下~
1 楼 key232323 2008-11-10  
关注,这方面的知识和经验。

相关推荐

    无穷的困惑:个体行为的基础是什么?.pptx

    无穷的困惑:个体行为的基础是什么?.pptx

    破解内部审计的困惑与问题--课后测试.docx

    破解内部审计的困惑与问题是一份关于内部审计的课后测试,涵盖了内部审计的基础知识、审计模式、风险评估、内控要素、审计独立性等方面的知识点。本文将对这些知识点进行详细的解释和分析。 一、内部审计的基础知识...

    电改困惑:中国新能源并网为何难.pdf

    电改困惑:中国新能源并网为何难.pdf

    投资界的最大困惑:何处寻找未来的腾讯和阿里

    投资界的最大困惑:何处寻找未来的腾讯和阿里

    兴长信达刘磊的困惑:传统企业电商野蛮生长.docx

    兴长信达刘磊的困惑:传统企业电商野蛮生长.docx

    用python计算lda语言模型的困惑度并作图

    困惑度是一种评估语言模型好坏的指标,定义为exp^{ - (∑log(p(w))) / (N) },其中P(W)是指测试集中出现的每个词的概率,N是测试集中出现的所有词的数量。该指标可以用来评估语言模型的好坏,越小的困惑度表示语言...

    从无穷开始:科学的困惑与疆界.pdf

    人类能直接认知的事物是有限的。但“无穷”二字经常会在思考的瞬间乍现。伊曼努尔·列维纳斯曾经说过:“有些事物能让思想超越一切限制...这一概念自然而然地联系到自然数的连续性上: 1、 2、 3……一个数后面总跟着另

    测试射频电感时,如何正确处理补偿值?

    测试射频电感时,关于补偿值的问题往往让刚接触这类产品的小伙伴感到困惑,这么小的电感量,为什么要在测试电感量的基础上增加补偿值来校准?实际线路设计中该如何处理这个补偿值问题呢?补偿值的庐山真面目 射频...

    产品上线的前戏:可用性测试(包含关键维度分析及过程).docx

    可用性测试的类型可以分为两类,一类是形成性的测试,也即是前期或中期设计测试,在产品产出前对产品可用性进行测试。发现可用性问题,改善产品体验;一类是总结性测试,在产品后期迭代改版,也即产品上线后整个过程...

    性能测试报告模板.rar

    性能测试是IT行业中一个至关重要的环节,特别是在软件开发与维护过程中,它用于评估系统的承载能力、响应速度以及稳定性。"性能测试报告模板.rar"提供的内容是帮助测试人员规范地记录和展示性能测试结果的一种工具。...

    ChatGPT对话系统的可扩展性与稳定性解析.docx

    在稳定性方面,ChatGPT 的生成模型本质上是一个概率模型,存在输出不稳定的问题,可能会导致相同的输入产生不同的响应,从而给用户带来困惑和不确定感。为了提高 ChatGPT 的稳定性,可以考虑引入模型的先验知识和...

    测试界面urong.rar

    2. 性能测试:评估系统在高负载或长时间运行条件下的响应速度、稳定性、资源消耗等。对于界面测试,这可能涉及页面加载速度、交互延迟等方面。 3. 兼容性测试:确保软件在不同的硬件、操作系统、浏览器或移动设备上...

    软件测试报告一详细模板(经典).docx 测试人员写文档的最好模板

    在实践中,测试报告的编写需要注意以下几点: 1. 测试报告应该根据实际情况进行调整和修改,以适应不同的项目和测试需求。 2. 测试报告应该具有明确的结构和格式,以便读者能够快速了解测试的目的、结果和结论。 3....

    一张图解决对互联网运营的困惑:定目标、列手段、配岗位、做考核

    我在给企业做诊断的时候,发现他对运营的了解非常少,直接导致花的都是冤枉钱。老陈对自己的行业超级熟悉,谈起传统那套打法能滔滔不绝讲5个小时,中间不喝水,但遇到互联网这套新玩法就犯难了,不做怕被淘汰,做又...

    测试中的常见问题分析

    在软件开发过程中,测试是至关重要的环节,它确保产品的质量,发现并修复潜在的问题,以提供用户一个稳定、高效和安全的使用体验。本文将详细探讨“测试中的常见问题分析”,涵盖形象类问题、可用性问题和稳定性问题...

    H-B组测试需求评审汇总1

    在本次的“H-B组测试需求评审汇总1...综上所述,此次评审暴露了文档编写、测试设计和执行、以及性能指标定义等方面的问题,这些问题都需要在后续的工作中进行改进和完善,以保证基于Scrapy的WebUI项目的质量和可靠性。

    小小Vir(整人软件源码)

    6. **调试与测试**:在发布整人软件之前,需要进行充分的调试和测试,以确保软件的稳定运行,避免因错误导致的意外情况。 7. **法律问题**:使用整人软件需注意不要侵犯他人的权利,比如侵犯隐私权或知识产权,同时...

    国际宏观评论-天风证券-宏观点评:鲍威尔的困惑——是工作找不到人?还是人找不到工作?.pdf

    国际宏观评论-天风证券-宏观点评:鲍威尔的困惑——是工作找不到人?还是人找不到工作?.pdf

    手机测试经验总结(软件和硬件测试方面)

    初到公司我十分困惑,没有接受过系统的培训,对测试一无所知,既不知道该测试什么,也不知道如何开始测试。 我想涉足手机测试行业的你们,一样会遇到当初我遇到的过的问题,因此这次讲座就是给大家分享我在手机测试...

    App开发者日记:iOS App开发是什么样的?.docx

    在这个过程中,测试是至关重要的环节,因为只有通过广泛的测试,才能确保应用的稳定性和用户体验。然而,iOS平台的测试面临独特的挑战。尽管有iOS模拟器,但真机测试是必不可少的,而苹果对开发者账户在设备上的限制...

Global site tag (gtag.js) - Google Analytics