「java模拟并发测试」如何模拟并发测试
今天给各位分享java模拟并发测试的知识,其中也会对如何模拟并发测试进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java如何处理并发问题
- 2、JAVA如何写一个纯并发的压力测试
- 3、Java Web应用如何压力测试?工具有哪些?具体怎么做?
- 4、用java的netty框架写了一个udp服务端,怎么测试它能承受的并发压力
- 5、java socket客户端模拟测试高并发服务器
- 6、java写的web程序 怎么做压力测试呀,就是测试并发率(同一时间最大支持多少用户请求呢)?
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模拟并发测试和如何模拟并发测试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。