`
xiangkw
  • 浏览: 45155 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java模拟并发操作进行压力测试

阅读更多
import java.io.BufferedReader;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.InputStreamReader;

  import java.io.PrintWriter;

  import java.net.HttpURLConnection;

  import java.net.URL;

  import java.util.HashMap;

  import java.util.Map;

  import java.util.concurrent.ExecutorService;

  import java.util.concurrent.Executors;

  import java.util.concurrent.Semaphore;

  public class ConcurrentTest {

  private static int thread_num = 200;

  private static int client_num = 460;

  private static Map keywordMap = new HashMap();

  static {

  try {

  InputStreamReader isr = new InputStreamReader(new FileInputStream(

  new File("clicks.txt")), "GBK");

  BufferedReader buffer = new BufferedReader(isr);

  String line = "";

  while ((line = buffer.readLine()) != null) {

  keywordMap.put(line.substring(0, line.lastIndexOf(":")), "");

  }

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  public static void main(String[] args) {

  int size = keywordMap.size();

  // TODO Auto-generated method stub

  ExecutorService exec = Executors.newCachedThreadPool();

  // 50个线程可以同时访问

  final Semaphore semp = new Semaphore(thread_num);

  // 模拟2000个客户端访问

  for (int index = 0; index < client_num; index++) {

  final int NO = index;

  Runnable run = new Runnable() {

  public void run() {

  try {

  // 获取许可

  semp.acquire();

  System.out.println("Thread:" + NO);

  String host = "http://10.99.23.42:7001/KMQueryCenter/query.do?";

  String para = "method=getQueryResult&pageNum=1&pageSize=5&"

  + "queryKeyWord="

  + getRandomSearchKey(NO)

  + "&questionID=-1&questionIdPath=-1&searchType=1"

  + "&proLine=&proSeries=&proType=" + NO;

  System.out.println(host + para);

  URL url = new URL(host);// 此处填写供测试的url

  HttpURLConnection connection = (HttpURLConnection) url

  .openConnection();

  // connection.setRequestMethod("POST");

  // connection.setRequestProperty("Proxy-Connection",

  // "Keep-Alive");

  connection.setDoOutput(true);

  connection.setDoInput(true);

  PrintWriter out = new PrintWriter(connection

  .getOutputStream());

  out.print(para);

  out.flush();

  out.close();

  BufferedReader in = new BufferedReader(

  new InputStreamReader(connection

  .getInputStream()));

  String line = "";

  String result = "";

  while ((line = in.readLine()) != null) {

  result += line;

  }

  // System.out.println(result);

  // Thread.sleep((long) (Math.random()) * 1000);

  // 释放

  System.out.println("第:" + NO + " 个");

  semp.release();

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  };

  exec.execute(run);

  }

  // 退出线程池

  exec.shutdown();

  }

  private static String getRandomSearchKey(final int no) {

  String ret = "";

  int size = keywordMap.size();

  // int wanna = (int) (Math.random()) * (size - 1);

  ret = (keywordMap.entrySet().toArray())[no].toString();

  ret = ret.substring(0, ret.lastIndexOf("="));

  System.out.println("\t" + ret);

  return ret;

  }

  }
分享到:
评论

相关推荐

    压力测试java模拟

    通过配置线程组(模拟并发用户)、采样器(定义请求类型)、监听器(收集和分析测试结果)等组件,我们可以定制出满足特定需求的压力测试计划。 在文件列表中的"stg~~"可能代表一个或多个与压力测试相关的文件,...

    JMeter 之TCP服务器并发压力测试

    本文将详细介绍如何使用JMeter进行TCP服务器的并发压力测试,包括环境搭建、软件下载与安装、以及具体的操作实例。 首先,要使用JMeter进行测试,需要确保你的环境中安装了JDK(Java开发工具包)。JMeter要求JDK...

    基于JAVA简单简洁的压力测试, QPS测试工具.zip

    Java中的压力测试通常涉及到多线程和并发控制,以模拟多个用户同时访问应用。在Java中,我们可以利用`java.util.concurrent`包中的类,如`ExecutorService`、`ThreadPoolExecutor`和`Future`来创建并管理线程池,...

    压力测试脚本

    9. **分布式测试**:对于大型系统,压力测试脚本可能需要在多台机器上并行运行,以模拟更大的并发量。这需要了解如何配置和管理分布式测试环境。 10. **持续集成**:压力测试脚本可与持续集成工具(如Jenkins、...

    网站压力测试程序----附带java源码

    通过研究这个Java压力测试程序的源码,我们可以学习到如何设计和实现一个高效的压力测试工具,以及如何利用Java进行并发编程和性能测试。这将对提升我们的系统架构设计能力和故障排查技能大有裨益。

    oracle压力测试工具 java版

    1. **并发执行**:Java版的Oracle压力测试工具应具备创建并管理多个并发线程的能力,这些线程模拟多个用户同时访问数据库,以测试系统在高并发情况下的响应速度和处理能力。 2. **SQL脚本支持**:工具应能接受SQL...

    模拟Loadrunner 压力测试 程序

    本篇文章将深入探讨LoadRunner的压力测试原理、操作流程以及如何通过编写脚本来模拟压力测试。 一、LoadRunner简介 LoadRunner是由HP公司开发的一款企业级负载和性能测试工具,它能够对多种应用服务器进行压力、...

    jmeter压力测试

    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI ...

    LoadRunner_Java.zip_压力测试

    【压力测试】是一种重要的软件性能评估方法,主要目的是模拟大量用户并发访问或操作应用程序,以检测系统的稳定性和可扩展性。在本案例中,我们关注的是数据库的压力测试,即通过多线程技术来测试数据库管理系统...

    jakarta-jmeter-2.1.1(JAVA Web并发测试)

    3. **压力测试**:通过增加大量并发用户,测试服务器的极限处理能力,判断何时会出现服务崩溃或响应时间过长的情况。 4. **功能测试**:除了性能测试,JMeter还可以用于验证应用的功能,比如HTTP、FTP、SMTP、SOAP...

    Apache 压力测试工具ab 专注接口测试 并发测试

    Apache的ab(ApacheBench)是一款简单而强大的压力测试工具,专用于接口和并发测试。在Web服务性能优化和系统负载能力评估中,ab扮演着关键角色。它可以帮助开发者和运维人员了解服务器在高并发情况下的表现,以及...

    Jmeter-Java-Sampler.rar_jmeter_jmeter java_压力测试

    Java Sampler是JMeter框架的一部分,它允许开发者用Java语言编写测试脚本,从而实现对任何基于Java接口的服务进行压力测试。这种灵活性使得Java Sampler成为那些无法通过默认取样器实现测试需求的项目的理想选择。 ...

    高并发模拟多个用户同时访问

    高并发模拟多个用户同时访问所写接口,用于测试接口所需要的的并发,和接口的最多承受用户量,适用于一些简单的压力测试。

    C++单元测试、压力测试、快速测试工具

    压力测试,又称为负载测试,主要是为了测试系统在高负载或大量并发请求下的表现和稳定性。在C++中,我们可以使用Apache JMeter、LoadRunner等工具进行压力测试。Apache JMeter是一个开源的Java应用,可以模拟多个...

    压力测试模拟jmeter

    其中,压力测试尤为关键,它模拟真实环境中大量并发用户对系统进行访问,以此来检测系统的极限性能。在这个过程中,Apache JMeter是一款广泛使用的开源工具,尤其在压力测试和负载测试方面表现出色。 Apache JMeter...

    Jmeter WEB HTTP压力测试实例

    Jmeter 在 Windows XP/2003/W7/W8 等操作系统中都可以运行,前提是需要安装好 JDK 包,因为 JMeter 是基于 JAVA 开发的压力测试软件。在本次配置实例中,我们使用的是 W8-64 位系统。 安装步骤 安装步骤非常简单,...

    高并发测试亲测可用

    Apache JMeter是Apache软件基金会的一个开放源代码项目,它主要用于对Web应用进行压力和负载测试。通过模拟大量并发用户请求,JMeter可以分析服务器、网络、数据库等组件的性能。其功能强大,支持多种协议如HTTP、...

    简易压力测试器.rar

    【简易压力测试器】正是为这个目的而设计,它能够模拟不同场景下的并发负载,以便开发者优化代码和调整服务器配置,确保应用在真实环境中能够稳定运行。 在【描述】中提到,此工具禁止用于恶意的攻击行为。这是因为...

    jmeter配置、安装手册-多并发多线程进行服务器压力测试.rar

    本手册将详细介绍如何配置和安装JMeter,以及如何利用它来进行多并发多线程的服务器压力测试。 一、JMeter简介 JMeter由Apache软件基金会开发,支持多种协议,包括HTTP(S)、FTP、SMTP、SOAP/REST等,可测试静态和...

Global site tag (gtag.js) - Google Analytics