tomcat下小博士压力测试

最大线程数开到100个没有问题

大于101个就有很多连接失败的

初步判断是tomcat的最大连接数设置的问题

重新设置tomcat server.xml

acceptCount=200后,最大线程可开到150 没有任何错误

acceptCount 指定放在队列里的请求数

<Connector connectionTimeout="20000" port="8080"  protocol="HTTP/1.1" redirectPort="8443" acceptCount="200" />

Java代码

package com.ask.pressure;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class AskPressure {
  private static String url =  "http://192.168.0.59:8080/ask/index.html";
  private static Integer error = 0;
  private static Integer threads = 150;
  private static Long startTime;
  public static void main(String[] args) {

  WorkThread[] workThreads = new WorkThread[threads];
  for(int i = 0; i < threads; i++){
   workThreads[i] = new WorkThread();
  }

  startTime = System.currentTimeMillis();
  //System.out.printf("线程数组初始化耗时%d毫秒\n", (System.currentTimeMillis() - startTime));

  for(int i = 0; i < threads; i++){
   workThreads[i].start();
  }

  //System.out.printf("连接失败:%d",error);
  }

  private static class WorkThread extends Thread {
  public void run(){
   long start = System.currentTimeMillis();
   long end = 0;
   try {
   URL u = new URL(url);
   HttpURLConnection urlConn = (HttpURLConnection) u.openConnection();
   urlConn.setUseCaches(false);
   urlConn.setRequestProperty("Content-type","text/html;  charset=UTF-8");
   urlConn.connect();
   //System.out.printf( "小博士页面编码: % s\n",urlConn.getContentEncoding());
   InputStream is = urlConn.getInputStream();
   StringBuffer buffer = new StringBuffer();
   readToBuffer(buffer,is);
   end = System.currentTimeMillis();
   } catch (Exception e) {
   synchronized(error){
    error ++;
   }
   e.printStackTrace();
   }

   synchronized(threads){
   threads --;
   System.out.printf("还有%d个未完线程,耗时%d毫秒\n",threads, (System.currentTimeMillis() - startTime));
   if(threads == 0){
    System.out.printf("总耗时:%d毫秒\n", (System.currentTimeMillis() - startTime));
    System.out.printf("连接失败:%d\n",error);
   }
   }
  }

  public void readToBuffer(StringBuffer buffer,InputStream  is)
   throws IOException {
   String line; // 用来保存每行读取的内容
   BufferedReader reader = new BufferedReader(
    new InputStreamReader(is));
   line = reader.readLine(); // 读取第一行
   while (line != null) { // 如果line为空说明读完了
   buffer.append(line); // 将读到的内容添加到buffer中
   buffer.append("\n"); // 添加换行符
   line = reader.readLine(); // 读取下一行
   }
  }
  }
}

还有9个未完线程,耗时1484毫秒
还有5个未完线程,耗时1547毫秒
还有6个未完线程,耗时1516毫秒
还有7个未完线程,耗时1516毫秒
还有8个未完线程,耗时1484毫秒
还有4个未完线程,耗时1547毫秒
还有3个未完线程,耗时1547毫秒
还有2个未完线程,耗时1563毫秒
还有1个未完线程,耗时1578毫秒
总耗时:1578毫秒
连接失败:0
还有0个未完线程,耗时1578毫秒
总耗时:1578毫秒
连接失败:0

时间: 2024-09-07 06:40:29

tomcat下小博士压力测试的相关文章

有人能指导下-大数据压力测试去测试软件响应速度

问题描述 大数据压力测试去测试软件响应速度 怎么样去开发一个数据生成器,并在大数据背景下测试软件的响应速度...这个该怎么做? 解决方案 国内有AutoRunner和TestCenter,这两个是免费的. 解决方案二: 开发一个数据生成器? 不是很理解, 而且你场景描述太不清楚了,你是要通过专业的测试软件进行测试还是只是生成数据调用程序接口? 生成数据可以程序代码生成 或者 数据库的可以用存储过程创建, excel也可以啊 解决方案三: 根据你的程序来判断,产生一些尽可能和真实数据类似的随机伪数

Linux下webbench网站压力测试工具安装测试

一.安装编译工具  代码如下 复制代码 yum install ctags wget make apr* autoconf automake gcc gcc-c++ 二.下载webbench  代码如下 复制代码 wget http://home.tiscali.cz/cz210552/distfiles/webbench-1.5.tar.gz  #下载 三.安装webbench  代码如下 复制代码 tar zxvf webbench-1.5.tar.gz  #解压 cd webbench-1

Linux下Web网站压力测试工具Webbench使用教程_服务器其它

Webbench是一个非常简单的压力测试工具,Webbench最多可以模拟3万个并发连接去测试网站的负载能力. (1)Webbench安装 复制代码 代码如下: wget http://www.jb51.net/soft/linux/webbench-1.5.tar.gz tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make make install (2)Webbench使用 复制代码 代码如下: webbench -c 1000 -t 60 ht

Linux下Web性能压力测试工具http_load使用教程_服务器其它

http_load介绍:http_load基于linux平台的一种性能测工具.以并行复用的方式运行,用以测试web服务器的吞吐量与负载,测试web页面的性能. 下载及安装: wget http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz tar xzvf http_load-12mar2006.tar.gz cd http_load-12mar2006/ make && make install http_loa

j2ee最小化资源压力测试法则

前面看到有人讲j2ee的性能调优,虽然这块不是自己的专长,但是猪养多了,也忍不住跳出来说几句. 虽然几乎每本讲性能调优的书籍开篇都会提,没必要的情况下就不要做调优,但是我个人还是认为,所有系统在上线前,都应该做一次基本的压力测试并对相关的性能问题进行检测, 但是迫于资源压力,很多项目都无法做正规的压力测试,一直到系统上线出现问题,才倒回来找原因. 而正规的压力测试,往往因为需要严格模拟生产环境,需要耗费大量的资源,各类专家配合解决问题,并不是那么轻松的可以做下来的. 而j2ee应用的特点就是以复

利用ab压力工具对服务器进行压力测试

在使用之前,需要先确认是否服务器安装了Apache Http Server,如果没有安装,则需要先安装: $ sudo yum install httpd $ ab -V This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Fo

nginx反向代理-nginx+tomcat集群下的压力测试

问题描述 nginx+tomcat集群下的压力测试 我现在在单机下尝试模拟nginx+tomcat集群的配置,开了3台虚拟机,1台作nginx服务器另外两台作tomcat服务器. tomcat下的也设置了maxThreads和timeOut的值. nginx配的是将所有请求全部转发给后端的两台tomcat. 最后再装了nginx的虚拟机上用ab进行压力测试,在 -n 10000 -c 1500的时候 去测试192.168.171.134:18082没有问题,而测用127.0.0.1测nginx的

linux下web压力测试工具webbench

一直比较喜欢Ubuntu,也突然发现好长时间没有折腾ubuntu 了,哈哈,好长时间不搞,手痒了,技术这东东,还是需要经常折腾的. 其实以前做压力测试,AB使用的比较多,后来在张宴大哥的博客上看到webbench,然后自己也倒腾了下,还可以吧. 为什么要进行压力测试,说白了,就是测试你的代码的执行承载力,可能小的网站没有什么感触,因为他们每天的IP也就几千而已,一般服务器不经过优化,也可以罩得住, 但是大型网站是非常注重这些压力测试,因为他们注重的都是百万级的访问量, Webbench是什么呢?

使用WAMP进行压力测试,等到TOMCAT报错发现问题,基本解决国航OA服务器慢慢死掉的问题

进入D盘目录下 D:\wamp\bin\apache\apache2.2.21\bin\ 输入命令 abs -H "X-Anhe-Account-Username: 00000dsadasads" -H "X-Anhe-Account-Password: *****" -n 500 -c 1 http://*******:8081/airchina/Services?_action=MAINSCREEN abs -H "X-Anhe-Account-Use