通过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 命令进行运行,运行成功之后,通过浏览器是否可访问
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 压测的吞吐量是12589/s
结尾
也欢迎同行,粉丝,客户们可以按照以上的配置方式进行压测,也提醒各位不要开启info 级别日志,因为这会造成性能上大幅降低,压测只有4000/s ,只有error 级别差不多1/6 ,也透露下surging 后续会提供平台可视化,以下是部分模块