前言

surging是异构微服务引擎,提供了模块化RPC请求通道,引擎在RPC服务治理基础之上还提供了各种协议,并且还提供了stage组件,以便针对于网关的访问, 相对于功能,可能大家更想知道能承受多大的并发,大家也会各自进行压测,当碰上一些问题,导致压测结果不理想就会扣帽子给框架引擎,这个性能不行,那么上一个帖子回应了@wen-wen 所贴的压测报告,针对于压测结果,很多人不明所以,都是以一笔带过的方式告诉大家结果,那么这次从头至尾,把环境和测试过程进行梳理,通过此篇文章进行发布,也请各大同行监督。

环境

处理:Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz   2.20 GHz

内存:16.0 GB

语言:.NET 6.0

下载配置源码

1.通过surging 下载最新的源码, 下载完之后,选择测试ManagerService 模块服务中的Say服务,而测试的代码也比较简单,就是返回一字符串,代码如下

     public async Task<string> Say(string name)
{
return await Task.FromResult($"{name}: say hello");
}

2. 把日志级别提高,因为这会影响性能,比如设置的info 就要比error 级别低六倍,以测试的日志配置为例,测试使用的是NLog, 在Nlog.config 下把coloredConsole改成error级别,代码如下

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="coloredConsole" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false"
layout="${longdate}|${pad:padding=5:inner=${level:uppercase=true}}|${message}" >
<highlight-row condition="level == LogLevel.Debug" foregroundColor="DarkGray" />
<highlight-row condition="level == LogLevel.Info" foregroundColor="Gray" />
<highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow" />
<highlight-row condition="level == LogLevel.Error" foregroundColor="Red" />
<highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" backgroundColor="White" />
</target>
<target name="file" xsi:type="File"
archiveAboveSize="10240"
layout="${date}|${level:uppercase=true}|${message} ${exception}|${logger}|${all-event-properties}"
fileName="c:\surging1\${level}\_${shortdate}.log" />
</targets>
<rules>
<logger name="*" minlevel="error" writeTo="file" />
<logger name="*" minlevel="error" writeTo="coloredConsole" />
</rules>
</nlog>

3. release类型下 发布server,之后通过dotnet  Surging.Services.Server.dll 命令进行运行,运行成功之后,通过浏览器是否可访问

JMeter和JDK下载

1、JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi

2、JDK下载地址:https://www.oracle.com/technetwork/cn/java/javase/downloads/index.html

JDK+Jmeter安装

1、windows安装(以win 7为例)

1、 安装jdk、配置java环境变量(步骤略)

2、 解压apache-jmeter-2.13.zip到D盘

3、 桌面选择“计算机”(右键)--高级系统设置--环境变量

 4、 在”系统变量“---”新建“,在变量名中输入:JMETER_HOME,变量值中输入:D:\apache-jmeter-2.13

 5、 修改CLASSPATH变量,变量值中添加 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; 再点确定。

6、 进入到D:\apache-jmeter-5\bin下运行jmeter.bat即可打开JMeter

Jmeter非GUI运行压测

创建配置jmx 文件

1. 新增Thread Group

配置thread group的user thread为2000

2. 在thread group 下新增Http Request

配置Http Request,压测接口为http://localhost:281/api/manager/say?name=fanly,记得勾上Use KeepAlive

3.  然后点击save as 达到D:\

4.运行jmeter 控制台进行压测,代码如下

jmeter -n -t D:\HTTP.jmx -l D:\read.csv -e -o D:\ResultReport

5. 运行结果如下

以上看不懂,可以把生成的read.csv 加载到jmeter 生成报告进行查看,如下图

从以上图可以看出surging 的http 压测的吞吐量是25178/s

结尾

也欢迎同行,粉丝,客户们可以按照以上的配置方式进行压测,也提醒各位不要开启info 级别日志,因为这会造成性能上大幅降低,压测只有4000/s ,只有error 级别差不多1/6 ,也透露下surging 后续会提供平台可视化,以下是部分模块

通过jmeter压测surging的更多相关文章

  1. jmeter压测app

    使用代理的方式,录制app端脚本,之后用jmeter压测就没啥好说的了 1.电脑端谷歌设置本地代理(端口号为8888) 2.jmeter设置HTTP代理服务器(端口号为8888) 3.手机端wifi设 ...

  2. JMeter压测基础(三)——Mysql数据库

    JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...

  3. jmeter压测参数设定(转)

    jmeter压测参数设定 一.基本公式 线程数 = QPS * time: 注:QPS--每秒完成请求的个数:time--每个请求响应完成平均需要时间: 故QPS * time就是所有请求完成响应所需 ...

  4. jmeter压测、操作数据库、分布式linux下运行、webservice接口测试、charles抓包

    一.jmeter压测 在线程组中设置好,然后添加http请求,t添加聚合报告查看压力测试结果,如图: 一般压测时间10-15分钟,如果是稳定性测试,一般n*12小时,这些并发用户一直在请求. tps: ...

  5. jmeter压测之添加负载机

    jmeter压测基本介绍一般基准测试(基准测试时间一般为5分钟)后压测的时间是10-15分钟: 实施测试之前要拿到测试指标 例如:tps要达到多少响应时间要达到多少并发数要达到多少TPS :服务端每秒 ...

  6. jmeter 压测duobbo接口,施压客户端自己把自己压死了

    jmeter 压测duobbo接口,jmeter代码不合理,导致每执行一次请求,会调用一次消耗内存的实例化.导致越压越慢,请求发不出去.这个时候需要考虑修改代码了. 截图中,tps越来越少. 原来初始 ...

  7. jmeter压测-负载配置

    jmeter 压测 一般压测的时间是10-15分钟 TPS:服务端每秒钟处理的请求数  越大越好 响应时间 :越短越好 并发用户数  也就是多少并发 指标给你:tps要达到多少 响应时间要达到多少 并 ...

  8. JMeter压测“java.net.BindException: Address already in use: connect”解决方法

    之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...

  9. jmeter压测学习1-window环境准备与案例

    前言 最近用jmeter做一些接口的压力测试,记录下使用过程中遇到的一些问题. 在使用window机器做并发压测的时候,发现并发数设置100的时候,会出现报错:java.net.SocketExcep ...

随机推荐

  1. 浅析 Linux 中的零拷贝技术

    本文探讨Linux中 主要的几种零拷贝技术 以及零拷贝技术 适用的场景 .为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入: 引文 在写一个服务端程序时(Web Server或者文件服务器), ...

  2. 在SpringBoot中使用logback优化异常堆栈的输出

    一.背景 在我们在编写程序的过程中,无法保证自己的代码不抛出异常.当我们抛出异常的时候,通常会将整个异常堆栈的信息使用日志记录下来.通常一整个异常堆栈的信息是比较多的,而且存在一些没用的信息.那么我们 ...

  3. 【理论积累】C语言基础理论知识【第一版】

    第一个程序 #include <stdio.h> int main(){ printf("Hello World"); } 变量与常量 变量类型:整型[int].字符型 ...

  4. Mqtt入门:在线调试连接阿里云

    近期课设需要做个东西,我想要做个上位机更好的显示. 但是一开始学习一样东西,听没头绪的,不知道从哪里入手,尝试过去B站找视频看,但是感觉视频讲的都是基础的东西,不是说人家up主讲的不好,只是对于入门, ...

  5. 【java并发编程】ReentrantLock 可重入读写锁

    目录 一.ReentrantLock可重入锁 二.ReentrantReadWriteLock读写锁 三.读锁之间不互斥 欢迎关注我的博客,更多精品知识合集 一.ReentrantLock可重入锁 可 ...

  6. Java异常处理最佳实践

    总结一些Java异常的处理原则 Java异常处理最佳实践 不要忘记关闭资源 在finally里关闭资源 public void readFile() { FileInputStream fileInp ...

  7. 使用 gitbook 制作自己的 html 文档

    使用 gitbook 制作自己的 html 文档 步骤如下 npm install gitbook-cli -g // 全局安装 gitbook-cli <span style="te ...

  8. 每天一个 HTTP 状态码 204

    204 No Content 204 No Content 表示服务器成功地处理了客户端的请求,但是没有任何要响应的内容.API 设计上,在用 PUT 请求更新某个资源成功后,后端可以在 HTTP 响 ...

  9. go-zero 微服务实战系列(二、服务拆分)

    微服务概述 微服务架构是一种架构风格,它将一个大的系统构建为多个微服务的集合,这些微服务是围绕业务功能构建的,服务关注单一的业务功能,这些服务具有以下特点: 高度可维护和可测试 松散的耦合 可独立部署 ...

  10. MCDF实验2

    ​  目录 接口的使用 仿真的结束 类的例化和类的成员 接口的使用 问题1.1:可以看到之前的实验 channel initiator 发送的数据例如 valid 和 data 与时钟 clk 均在同 ...