解决方案 »

  1.   

    在运行,还能正常访问,只不过在loadrunner压力测试报错之后,就连不上Tomcat,压力测试关掉之后就能正常连接上
      

  2.   

    你300个请求在排队,排队也有超时时间的,不是一直等的。
    个人感觉,是排到第50个人的时候,前面的http请求已经超时造成的
      

  3.   

    connnectionTimeout =20s
    户每2秒增加5个
    所以20秒后增加到50个排队,300+50=350
    而这时正好超时时间已到
      

  4.   

    纠正下,不是250个等待“线程”,而是等待的队列里面,还有250个空位。只好用排除法了,尝试调整<connector>里面不同的数字,每次放大/缩小一个数字。再loadrunner(配置不变),看是否还报错,如果报错,是否数量有变化。然后再尝试loadrunner配置调整。根据变化情况,再来帮你分析分析。另外,还有件很重要的事情,请确认你connector的类型。因为protocol字段写HTTP/1.1的话,有可能对应2种不同的socketorg.apache.coyote.http11.Http11Protocol,block io(BIO)
    org.apache.coyote.http11.Http11AprProtocol, Apr io (AIO)
    如果你的PATH/LD_LIBRARY_PATH下有tomcat native library(tomcat/bin/tcnative-1.dll之类),优先用AIO,否则用BIO,
    此外还有第三种,将protocol配置为
    org.apache.coyote.http11.Http11NioProtocol,对应 non blocking io (NIO)建议考虑显式指定NIO或AIO。不过,暂时没有明确证据表明选用哪种protocol与你的问题直接相关。其他可以参考:http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
      

  5.   

    另外,你这里测试客户端这里,是否本地端口已满。netstat 看看,是否有很多close_wait,而且最大本地端口号已经接近65535了
      

  6.   


    哥们,多谢,麻烦你这这么敲字回答了!
    针对你提的问题,我一一做了试验:
    1.调整connector里面不同的数字,我把maxThread调整到1000,acceptCount也调整到了1000,或者两个都调到100,依旧是340-350个用户开始报错,错误信息依旧。
    2.用netstat -na查看了端口占用情况,端口没有接近65535,才50000不到你说的确认connector的类型这个不太明白是什么意思
      

  7.   

    因为我平时用jmeter,LR不熟悉,你LR有详细日志吗?
    你protocol="HTTP/1.1"自然只可能是AIO(bin目录下是否有tcnative-1.dll这个dll)或者BIO(没dll)了。
    或者你看下你tomcat启动日志/控制台输出,上面是否有:
    这样的字样。