风雨同行 发表于 2022-8-28 09:56:03

通过jmeter压测surging

前言


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 命令进行运行,运行成功之后,通过浏览器是否可访问
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717224254588-1083912949.png
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
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717225139007-2016869349.png
 
配置thread group的user thread为2000
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717225545985-1750885808.png
 
 
 
 2. 在thread group 下新增Http Request
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717225413840-1630679503.png
 
 
配置Http Request,压测接口为http://localhost:281/api/manager/say?name=fanly,记得勾上Use KeepAlive
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717225809982-1304174811.png
 
3.  然后点击save as 达到D:\
 4.运行jmeter 控制台进行压测,代码如下
jmeter -n -t D:\HTTP.jmx -l D:\read.csv -e -o D:\ResultReport5. 运行结果如下
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717230147918-1214905868.png
 
以上看不懂,可以把生成的read.csv 加载到jmeter 生成报告进行查看,如下图
https://img2022.cnblogs.com/blog/192878/202207/192878-20220717233945608-1636857798.png
 
 
 
 从以上图可以看出surging 的http 压测的吞吐量是12589/s
结尾

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 通过jmeter压测surging