Yarp 与 Nginx性能大比拼不出所料它胜利了!

简介: Yarp 与 Nginx性能大比拼不出所料它胜利了!

测试环境:

Ubuntu 22.04.3 LTS (GNU/Linux 6.5.0-14-generic x86_64)

Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz *2

运行内存:94.3G

yarp 环境

.NET 8 SDK

Program.cs代码:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddReverseProxy()
    .LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
var app = builder.Build();
app.MapReverseProxy();
app.Run();

Test.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <InvariantGlobalization>true</InvariantGlobalization>
        <PublishAot>true</PublishAot>


        <StackTraceSupport>false</StackTraceSupport>
        <OptimizationPreference>Size</OptimizationPreference>
        <PublishTrimmed>true</PublishTrimmed>
        <BlazorEnableTimeZoneSupport>false</BlazorEnableTimeZoneSupport>
        <EventSourceSupport>false</EventSourceSupport>
        <HttpActivityPropagationSupport>false</HttpActivityPropagationSupport>
        <EnableUnsafeBinaryFormatterSerialization>false</EnableUnsafeBinaryFormatterSerialization>
        <MetadataUpdaterSupport>false</MetadataUpdaterSupport>
        <UseNativeHttpHandler>true</UseNativeHttpHandler>
        <TrimMode>link</TrimMode>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="Yarp.ReverseProxy" Version="2.1.0" />
    </ItemGroup>

</Project>

参考 Native AOT deployment overview - .NET | Microsoft Learn 在服务器中安装 aot 环境

使用以下指令构建 aot 程序

dotnet publish -c Release -r linux-x64 --self-contained true /p:PublishAot=true --output ../output

Nginx 安装

在服务器中安装 nginx

sudo apt install nginx

/etc/nginx/conf.d目录下创建一个 wwwroot.conf

server {
   
   
    listen 7771;
    server_name localhost;
    location / {
   
   
        add_header 'Access-Control-Allow-Origin' 'http://localhost:8088';
        add_header 'Cache-Control' 'public, max-age=604800';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        rewrite ^/proxy/bing/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:7777/;
    }
}

代理的服务

.NET 8 SDK

创建一个用于测试的代理服务,提供一个简单的接口,直接返回空的字符串。我们将这个服务发布成 linux-64 的程序,

Program.cs

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();

var app = builder.Build();


app.MapGet("/weatherforecast", () => string.Empty)
    .WithName("GetWeatherForecast");

app.Run();

image.png

并且使用

chmod +x WebApplication1

然后启动我们的代理测试端点

./WebApplication1 urls="http://*:7777"

使用的测试工具

Apipost-Team/runnerGo: A tool similar to apache bench (ab) (github.com)

由 ApiPOST 开源的基于 Go 语言实现的压测工具,我们去 Release 下载发布好的 win-64 位程序,然后执行,

然后打开测试界面runnerGo UI (apipost.cn)

压测结果

http://192.168.31.251:7772/weatherforecast Yarp 代理的服务

http://192.168.31.251:7771/weatherforecast Nginx 代理的服务

第一轮测试:

YARP 压测结果:

image.png
Nginx 压测结果:

image.png

第二轮测试:

Yarp 压测结果:
image.png

Nginx 压测结果:

image.png

第三轮压测:

Yarp 压测结果:
image.png

Nginx 压测结果:

image.png

结论

以上测试都是在内网测试,都属于同一个局域网,由测试结果得出 Yarp 基本完胜 Nginx,虽然说基本性能超越,但是 Yarp 也并发完全可替代 Nginx,Nginx 是支持 TCP/UDP 代理的,而 Yarp 默认是只支持 Http 协议的代理。

来自 token 的分享

技术交流群:737776595

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
5月前
|
应用服务中间件 Linux nginx
直接部署nginx和在docker里面部署nginx性能上有区别吗
直接部署nginx和在docker里面部署nginx性能上有区别吗
184 0
|
域名解析 负载均衡 架构师
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
前面讲了如何配置Nginx虚拟主机、如何配置反向代理。Nginx最主要的功能就是反向代理和负载均衡。今天要说的是如何配置nginx和tomcat实现反向代理。
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
4月前
|
应用服务中间件 nginx
简单理解Nginx内存池:优化性能的关键
简单理解Nginx内存池:优化性能的关键
110 0
|
5月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【提升网站性能:Nginx五种高效负载均衡策略】
希望以上信息对你有所帮助,如需更详细的配置和使用说明,建议参考Nginx官方文档或相关的教程资源。
56 0
|
6月前
|
缓存 负载均衡 应用服务中间件
百度搜索:蓝易云【提升网站性能:Nginx五种高效负载均衡策略详解!】
以上是Nginx常用的五种高效负载均衡策略。根据不同的应用场景和需求,选择合适的负载均衡策略可以提高网站性能和可靠性。在Nginx配置文件中,可以通过设置 `upstream`块来定义后端服务器列表和负载均衡策略。具体配置方法可以参考Nginx官方文档和相关资源,以获得更详细的说明和示例。
48 0
|
8月前
|
网络协议 架构师 应用服务中间件
Nginx 实战系列之三:Nginx TCP backlog 分析优化和性能相关经验汇总
Nginx 实战系列之三:Nginx TCP backlog 分析优化和性能相关经验汇总
|
9月前
|
弹性计算 缓存 算法
Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。 相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
9月前
|
缓存 监控 应用服务中间件
Nginx 为什么性能比较好?
Nginx 为什么性能比较好?
51 0
|
消息中间件 JavaScript Java
比 Nginx 性能更强的下一代 Web 服务器
比 Nginx 性能更强的下一代 Web 服务器