如何评估留个VKProxy在性能测试中的表现?
摘要:其实原本是打算OpenTelemetry对应内容搞好后再做个简单的性能测试,也算表明自己写(抄)代码的能力(不至于用了反射什么的就把Kestrel这么好的底子的性能拖垮了) 但是最近看见一篇go的文章 报告揭示 OpenTelemetry
其实原本是打算OpenTelemetry对应内容搞好后再做个简单的性能测试,也算表明自己写(抄)代码的能力(不至于用了反射什么的就把Kestrel这么好的底子的性能拖垮了)
但是最近看见一篇go的文章 报告揭示 OpenTelemetry 对 Go 的性能影响,说OpenTelemetry 拖慢了 go 30+% 的性能,
虽然个人还是保守持怀疑态度,但万一本人代码写得臭,到时候找不到地方怪怎么办
所以先留份简单的性能测试记录,后面搞好OpenTelemetry再做个比较
基准项目
一切从简,就选大家都熟悉的初始demo项目做基准好了
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
this.Response.Headers["x-p"] = this.Request.Protocol;
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
代理配置
启动最简单的代理配置(主要想看看最理想情况下的结果)
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"ServerOptions": {
"AddServerHeader": false
},
"ReverseProxy": {
"ConnectionTimeout": "00:00:01.000",
"Listen": {
"https": {
"Protocols": [ "Http1", "Http2", "Http3" ],
"Address": [ "127.0.0.1:5001" ],
"UseSni": true,
"SniId": "test"
},
"http": {
"Protocols": [ "Http1" ],
"Address": [ "127.0.0.1:5000" ]
},
"tcptest": {
"Protocols": [ "Tcp" ],
"Address": [ "127.0.0.1:5002" ],
"RouteId": "tcpTest"
}
},
"Sni": {
"test": {
"Host": [ "*" ],
"CheckCertificateRevocation": false,
"Certificate": {
