「java模拟并发测试」如何模拟并发测试

博主:adminadmin 2022-11-26 04:05:09 88

今天给各位分享java模拟并发测试的知识,其中也会对如何模拟并发测试进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java如何处理并发问题

这个和处理器多核没关系,问题应该是出在你的存储过程自增程序上,多个客户端同时发起申请时,自增程序都是在原申请编码基础上递增,所以取值相同。简单一点的做法是:新增一张临时表,每次发起申请时记录预分配的申请编码。自增程序在此编码的基础上递增即可

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 = "?";

String para = "method=getQueryResultpageNum=1pageSize=5"

+ "queryKeyWord="

+ getRandomSearchKey(NO)

+ "questionID=-1questionIdPath=-1searchType=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 Web应用如何压力测试?工具有哪些?具体怎么做?

经典的自然是loadrunner,可以进行并发压力测试,很实用,可以模拟多IP,多用户同时运行,可以设置运行间隔,可以参考下相关的文档,建议去csdn上下一个相关的教程

用java的netty框架写了一个udp服务端,怎么测试它能承受的并发压力

主从Reactor多线程Nio结构,主从Reactor线程模型的特点是:服务端用于接收客户端连接的不再是个1个单独的NIO线程,而是一个独立的NIO线程池。Acceptor接收到客户端TCP连接请求处理完成后(可能包含接入认证等),将新创建的SocketChannel注册到IO线程池(sub reactor线程池)的某个IO线程上,由它负责SocketChannel的读写和编解码工作。Acceptor线程池仅仅只用于客户端的登陆、握手和安全认证,一旦链路建立成功,就将链路注册到后端subReactor线程池的IO线程上,由IO线程负责后续的IO操作。

利用主从NIO线程模型,可以解决1个服务端监听线程无法有效处理所有客户端连接的性能不足问题。

它的工作流程总结如下:

从主线程池中随机选择一个Reactor线程作为Acceptor线程,用于绑定监听端口,接收客户端连接;

Acceptor线程接收客户端连接请求之后创建新的SocketChannel,将其注册到主线程池的其它Reactor线程上,由其负责接入认证、IP黑白名单过滤、握手等操作;

步骤2完成之后,业务层的链路正式建立,将SocketChannel从主线程池的Reactor线程的多路复用器上摘除,重新注册到Sub线程池的线程上,用于处理I/O的读写操作。

java socket客户端模拟测试高并发服务器

要求很高啊,我这有段代码,你看看。

package com.test;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.Socket;

public class TestHTTP {

 public void doinit() throws Exception {

  Socket s = new Socket("127.0.0.1", 8080);

  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s

    .getOutputStream()));

  bw.write("OPTIONS / HTTP/1.1");

  bw.newLine();

  bw.write("Host: 127.0.0.1:8080");

  bw.newLine();

  bw.write("Content-Type: text/html");

  bw.newLine();

  bw.newLine();

  bw.flush();

  BufferedReader br = new BufferedReader(new InputStreamReader(s

    .getInputStream()));

  String str = null;

  while ((str = br.readLine()) != null) {

   System.out.println(str);

  }

  bw.close();

  br.close();

  s.close();

 }

 public static void main(String[] args) throws Exception {

  new TestHTTP().doinit();

 }

}

java写的web程序 怎么做压力测试呀,就是测试并发率(同一时间最大支持多少用户请求呢)?

使用loadrunner,进行压力测试,有比较详细的测试结果,

就是配置和使用loadrunner比较麻烦,不过网上有详细的教程,去下载一个吧,

自己写循环去测试,极不准确

关于java模拟并发测试和如何模拟并发测试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。