java 写http压测

jmeter压测、websocket压测实例 Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在 linux/windows/macos上都可以使用。jmeter可以做接口测试和压力测试。 阅读详情

本文只是写个简单的小程序
第一个类制作自己的实例,并在自己的实例中创建线程和第二个类的实例,线程中不断循环调用第二个类的方法

第二个类负责访问http连接,判断返回状态

public class HttpTest {


    private ConcurrentLinkedQueue<String>  concurrentLinkedQueue = new ConcurrentLinkedQueue<String>();
    private static int count_up = 0;
    private static int count_get = 0;
    private static boolean isRun = true;
    private static final int threadSize = 2;

    public static void main(String[] arg){

        for(int i = 0; i<threadSize ;i++){
            HttpTest httpTest = new HttpTest();
            httpTest.input();
            httpTest.output();
        }
    }

    private void input(){
            getInputThread().start();
    }

    private void output(){
            getOutputThread().start();
    }

    private Thread getInputThread(){

        return new Thread(new Runnable() {
            public void run() {

                while (isRun){

                    long start = System.currentTimeMillis();

                    String key = Test.getkey();

                    new PYDeepLink().callUp(key);

//                    inputList.add(key);
                    concurrentLinkedQueue.add(key);
                    count_up++;

                    if(count_up%1000 == 0){

                        System.out.println("up:" + count_up);
                        System.out.println("------------ 输入 : " + (System.currentTimeMillis() - start));

                    }
                }
            }
        });
    }

    private Thread getOutputThread(){

        return new Thread(new Runnable() {
            public void run() {
            while (isRun){

                long start = System.currentTimeMillis();

                String key = concurrentLinkedQueue.poll();
                if(null != key){
                    new PYDeepLink().callGet(key);
                    count_get++;
                    if(count_get%1000 == 0) {
                        System.out.println("gt : " + count_get);
                        System.out.println("------------ 获取 : " + (System.currentTimeMillis() - start));
                    }
                }

            }
            }
        });
    }
}

第二个类 :

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

class PYDeepLink {

    private static final String URL_BASE_UP = "http://.../up?v=";
    private static final String URL_BASE_GET = "http://.../get?v=";
    private static final int TIME_OUT = 2000;


    void callUp(String key){
        httpUp(URL_BASE_UP + key);
    }

    void callGet(String key){
        httpGet(URL_BASE_GET + key);
    }

    private void httpUp(final String httpUrl) {
        HttpURLConnection httpURLConnection = null;
        InputStream inputStream = null;
        try {
            URL url = new URL(httpUrl);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoOutput(false);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setRequestMethod("GET");
            httpURLConnection.setConnectTimeout(TIME_OUT);
            inputStream = httpURLConnection.getInputStream();

            byte[]  str = new byte[1];
            int readValue = inputStream.read(str);
                        // 
            if (readValue == -1 || !new String(str).equals("t") || httpURLConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.out.println("Up server return error");
            }

        } catch (Exception e) {
            System.out.println("connect error");
        } finally {
            if(null != inputStream)
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            if (null != httpURLConnection)
                httpURLConnection.disconnect();

        }
    }

    private void httpGet(final String httpUrl) {

        HttpURLConnection httpURLConnection = null;
        InputStream inputStream = null;
        try {
            URL url = new URL(httpUrl);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoInput(true);
            httpURLConnection.setDoOutput(false);
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setRequestMethod("GET");
            httpURLConnection.setConnectTimeout(TIME_OUT);

            inputStream = httpURLConnection.getInputStream();

            byte[]  str = new byte[18];
            int readValue = inputStream.read(str);
                        // 
            if (readValue == -1 || !new String(str).equals("t") || httpURLConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.out.println("Get server return error");
            }


        } catch (Exception e) {
            System.out.println("connect error");
        } finally {
            if (null != inputStream)
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            if (null != httpURLConnection)
                httpURLConnection.disconnect();
        }
    }
}
性能优化与压测引擎一:压测框架gatling 性能优化与压测一压测框架gatling简单使用介绍 压测框架gatling 说到压测,我们最熟悉的可能就是ab命令和jmeter了,确实他们很方便,但是我最近都在用另外一个压测框架,叫gatling,为什么呢,因为他的报告很吸引我,而且写压测脚本很方便,功能也挺全的,他可以很好的去模拟一些场景,用的是scala语言,用到actor模型,很容易模拟大量并发的场景,并发真的很强,我觉得挺不错的,天生封装了http的协议,当然可以想办法实现GRPC或者DUBBO,网上其实有的,遗憾的可能就是需要用到scala,对 阅读详情

相关推荐

轻量级http压测工具httptester

近来有需求要对HTTP接口进行压测,于是去了解了一下JMeter,发现虽然功能强大,但本身依赖JAVA,并且依赖图形化界面,不够轻量化,所以想着自己写一个基于命令行的轻量级压测工具,于是就有了httptester。 httptester是采用GO语言来编写的,尽管目前仍是早期版本,但是基本功能已经没有问题了。 快速开始 httptester是一个二进制可执行文件,无需安装。 下载最新版本:https://github.com/rocketk/httptester/releases 国内镜像地址:https:

飞翔的荷兰人号 2678

java http请求_Jmeter进行http压力测试,亲测图文小教程

开头先来些费话,首先说一下,本人为什么会对Jmeter有了解。这就起源于以前自己是个穷小子,在外面的做兼职,有一次接到了一个网站的性能测试;要求是在线上测试,既不能把服务搞挂,又要测试出来问题,所以后面就直接对接口测试了,繁琐的是每个接口之间的关联性很大,所以还要自己写代码集成到Jmeter中进行测试,这一次算是对Jmeter 有了一定的了解!下面我们就简单的介绍一下Jmeter作用、性能指标和一...

weixin_39607447的博客 300

基于HTTP、NIO、多线程实现浏览器高并发非阻塞访问服务器文件

代码经过压力测试,采用反应器模式,没有第三方框架,实现功能:可以一个线程处理多个请求,也可以加上多线程。处理数据采用的多线程。实现功能:基于HTTP协议,解析请求和拼接响应,基于NIO的非阻塞,线程池,文件传输。代码有详细注释和清晰的框架。 程序入口是: /HttpServerReactor/src/com/StartServer.Java 访问1,浏览:http://localhost:8989/files/1.txt 访问2,下载:http://localhost:8989/files/2.zip 测试并发,可以先下载,再浏览。

java http 并发测试_HTTP高并发测试

1 packagehttp;2 importjava.util.concurrent.ExecutorService;3 importjava.util.concurrent.Executors;45 public classHttpTester {67 /**8 * 各个HTTP请求的URL,参数通过StringUtils.format填充9 */10 static f...

weixin_28930803的博客 717

javaweb项目压力测试工具

javaweb项目压力测试工具jemeter&http_load(win)&SQLStress1.12

汽车Bootloader流程

根据ISO14229-1 写的汽车行业 Bootloader流程 1:编程前 → 先读取软硬件版本号 22 F1 XX 软件信息 22 F1 XX 硬件信息 → 进入扩展会话extend diagnostic sessions 功能寻址 10 03 → 编程条件检测routine control:ECU升级条件的判断,如车速,检测车的型号 31 01 02 03 → 关闭DTC检测,(由于很多节点收不到其它节点的报文后会记录DTC故障)功能寻址 85 02 → 关闭诊断通讯(禁止各个节点的应用报...

weixin_41320142的博客 2834

java模拟并发多线程测试http服务

java postman http请求 多线程

weixin_38869597的博客 1718

VMware桥接模式实战:用手机热点给Linux虚拟机共享网络(附WiFi适配技巧)

本文详细介绍了在移动办公场景下,如何为VMware中的Linux虚拟机配置桥接模式,以通过手机热点共享网络。文章深入解析了桥接模式在无线环境下的工作原理,提供了从主机端准备、VMware设置到Linux虚拟机内部配置的完整实战步骤,并针对手机热点的特殊性,分享了MTU优化、DNS配置及常见网络问题的诊断与解决方案,帮助用户实现稳定高效的移动虚拟化办公。

2y3u4i5o6p的博客 1198

简单 Http 压力测试代码

HttpClient.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLCon...

云计算? 191

AF3​​​​​​​ Msa、TemplateHit、HitMetadata类解读

Msa:处理 多序列比对 (MSA) 结果,为 AlphaFold3 提供 序列进化信息。 TemplateHit:存储 查询序列与模板结构的比对信息,用于 筛选模板。 HitMetadata:提供 比对模板的 PDB 结构信息,帮助 解析和使用模板数据。

qq_27390023的博客 820

Matlab实战:用递归最小二乘法(RLS)搞定动态系统参数辨识(附完整代码)

本文通过Matlab实战,详细介绍了如何利用递归最小二乘法(RLS)进行动态系统参数辨识。文章从理论优势切入,提供了完整的仿真数据生成、RLS算法核心实现代码,并对参数收敛过程、预测误差及不同遗忘因子的影响进行了可视化分析与性能评估,为工程实践提供了清晰的指南。

weixin_29035405的博客 504

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;   i

2万+

SAP交货单过账避坑指南:序列号处理、Buffer清理与BAPI提交回滚的那些事儿

本文深入解析SAP交货单过账中的序列号处理、Buffer清理与BAPI提交回滚等关键问题,提供WS_DELIVERY_UPDATE和BAPI_OUTB_DELIVERY_CONFIRM_DEC的实战优化方案。通过详细的技术分析和最佳实践,帮助开发者避免常见陷阱,提升交货单处理的稳定性和效率。

weixin_31155097的博客 432

JMeter 压测Http接口

今天产品在会议上吐槽说我们的服务接口连一点点压力都扛不住,用户稍微用下翻译功能,就报错 429。我一听 429 就觉得不对劲,明明4xx 的错误码应该找前端才对的,怎么能找我这个前端后端运维测试工程师呢?

software_test010的博客 797

Halcon那些事:Halcon非常核心的1个概念reduce_domain算子的理解和1个详细的使用示例

Reduce是减少的意思。并不是真的去裁剪图像,而是定义一个“感兴趣的区域(Region of Interest, ROI)”。后续的图像处理算子将只在这个定义的区域内有效,区域外的像素将被忽略。在一张白纸(完整图像)上放一张镂空的纸板(Domain)。我们后续的绘画(图像处理操作)只会透过镂空的部分影响到下面的白纸。镂空纸板之外的部分保持不变,也不会被处理。关键步骤:使用ReduceDomain,将图像的域限制为ROI区域,图像在原来图像基础上存在图像区域。

十多年IT经验,专注机器视觉,智能制造半导体行业 579

锂电池充放电管理-单片机通用模版

- **①两节锂电池通过电阻分压检测ADC,再根据电压划分电量等级;** - **②充电使用的是锂电池充电IC方案,可通过硬件电阻参数调节充电电流,并可以通过STAT引脚检测充电和满电状态(充电注意会抬高电压);** - **③放电根据ADC_BAT检测电池电量进行等级划分(注意大负载电压骤降瞬间);** - **④充放电过程注意在电量划分等级临界值来回抖动现象;**

a6662580的博客 1490

如何用jmeter压测java接口,Jmeter接口压测快速入门

[TOC]Jmeter简介Jmeter是Apache开源的一个使用纯Java编写的压力测试工具,它最初是为测试web应用程序而设计的,但后来扩展到了其他测试功能。例如,可用于测试静态和动态资源以及web动态应用程序的性能等。Jmeter可以用来模拟对服务器、服务器组、网络或对象上的重负载,以测试其强度或分析服务在不同负载类型下的总体性能。如今Jmeter是一个主流的、功能完善且强大的压测工具,由于...

weixin_42099151的博客 8438

Coze实战:解锁多Bot协同与条件分支工作流的奥秘

本文详细介绍了在字节跳动Coze平台实现多Bot协同与条件分支工作流的方法。首先阐述了Coze平台的功能优势,包括丰富的插件、知识库和工作流功能。随后分步骤讲解了多Bot协同的实现:从准备工作、创建Bot到协同配置,并提供了电商客服的实例演示。在条件分支工作流部分,详细说明了条件节点的作用类型、条件设定方法以及具体配置操作,强调测试优化的重要性。最后通过电商平台综合案例,展示了多Bot协同与条件分支的实际应用效果,并针对常见问题提供解决方案。文章为开发者在Coze平台上构建智能应用提供了实用指导,有助于提升

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 451

基于Jmeter的性能压测平台实现

很早就想要一套属于自己的性能压测平台,原因是使用了阿里云的性能测试PTS,就挺羡慕能有一个这样的性能测试平台,但毕竟人家的东西我们高攀不起(要钱的),而且阿里云的性能测试平台是不支持多种协议的(比如我有一个项目要用websocket测试,结果人家就支持http压测)。 说到开发自己的性能测试平台,肯定想到的是Jmeter,因为开源的性能测试工具没有比它更强大的了,所以第一个想到的是...

smooth的博客 4万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Jmeter压测http、Java接口总结

Jmeter压测http、Java接口总结Jmeter 通过线程组驱动多个线程。建立一个线程池,多线程运行取样器产生大量负载,达到压测的目的。一、基本组件1、HTTP信息头管理器2、csv data set Config二、HTTP接口1、https证书2、压测三、Java请求1、主要步骤:1、 上一个请求的接口作为下一个请求的参数, 提取四、命令行方式...

Ho_mj的专栏 3716

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用jmeter压测接口,并生成压测报告

安装jmeter,并用jmeter压测接口,并生成压测报告

weixin_46303384的博客 2618

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

快速上手JMeter基础压测

JMeter压测入门指南,快速上手工具的使用

m0_56070905的博客 2217

Java面试-如何进行系统性能压测?JMeter 使用与指标分析

《Java面试200问》系列文章《JMeter压测全攻略》系统讲解了性能测试的核心要点。文章从压测的本质出发,强调其作为系统“体检”而非“酷刑”的价值,详细解析了TPS、响应时间、错误率等关键指标。通过JMeter工具,手把手演示了从环境配置、脚本编写到参数化、断言验证的完整流程,并涵盖分布式压测和监控大屏搭建等进阶内容。文中穿插实用技巧和面试金句,如“压测不是为了搞死系统,而是提前发现病灶”,帮助开发者掌握性能测试的“道”与“术”,从容应对高并发场景挑战。最后通过Spring Boot实战案例和典型面试题

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

jmeter 压测java代码

jmeter 压测java代码

喵酱 3923

使用java简单模拟Jmeter的压测操作

简介:本文演示怎么用java模拟Jmeter的压测操作。

jakelihua 1456
上一篇: java 伪Random
下一篇: IMEI & Android ID
RobertLee~~~~~~~~
博客等级 码龄18年 14粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值