.NET Core 2 Benchmarking, req / s намного ниже ожидаемого - PullRequest
0 голосов
/ 28 августа 2018

Сегодня я запускал произвольный эталонный тест для пустого веб-приложения .NET Core и был разочарован тем, насколько низкими были числа запросов / запросов. Я видел примеров онлайн, где люди получают 50-60 тыс. Запросов / с, некоторые сумасшедшие, как 1,15 млн. Запросов / с, и мои часы находятся в диапазоне 1-2,5 тыс.

Технические характеристики моей машины:

enter image description here

Код:

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using System.IO;
namespace NetCore
{
  public class Startup
  {
    public static void Main(string[] args)
    {
      CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();

    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      app.Run(async (context) =>
      {
        await context.Response.WriteAsync("Hello World!");
      });
    }
  }
}

Который я запускаю, используя конфигурацию release , нацеленную на netcoreapp2.1:

dotnet publish -c release -f netcoreapp2.1

И я использую Bombardier для бенчмаркинга:

bombardier http://localhost:5000 -c 250 -d 30s

Результаты:

image

Просто интересно, упускаю ли я что-то здесь очевидное. Или делать что-то не так.

Чтобы отследить, я выложил выпуск на GitHub.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Возможно ли ведение журнала консоли на уровне Information? (Существуют также более быстрые формы ведения журнала)

Попробуйте выключить, уменьшив его до Warning, добавив файл appsettings.json { "Logging": { "LogLevel": { "Default": "Warning" } } } Также убедитесь, что вы используете сервер GC; верх вашего .csproj должен иметь .Web в конце <Project Sdk="Microsoft.NET.Sdk.Web">

Также вы используете опубликованную dll? dotnet bin\release\netcoreapp2.1\publish\myapp.dll

0 голосов
/ 29 августа 2018

Краткий ответ: Ваш процессор i7-7500U @ 2.70G @ 2.90G

  1. Здесь буква U в i7-7500U означает Ultra Low Voltage, что означает, что ваш процессор не такой мощный даже по сравнению с Core i4 с буквой HQ, HK или вообще без буквы.

  2. Обратите внимание, что те, кто использует онлайн-тесты, часто используют более мощный процессор. Например, Бенчмаркинг здесь , который обрабатывает 97,9 КБ / сек, использует процессор Intel(R) Core(TM) i7–4710HQ CPU @ 2.50GHz 2.50GHz.

  3. Я не думаю, что бенчмаркинг имеет значение или нет. Потому что у нас всегда будет разное оборудование, разные ОС, разные запущенные процессы и разные сети. Тем не менее, просто в качестве примера, чтобы доказать, что ЦП действительно имеет значение, я вставил контрольный код вашего кода на Мой компьютер (Core (TM) i7-4900 @ 3,6 ГГц @ 3,6 ГГц), как показано ниже:

    >bombardier.exe  http://localhost:5000 -c 250 -d 30s
    Bombarding http://localhost:5000 for 30s using 250 connection(s)
    

    [============================================== ================================================== =================] 30 с

    Готово!

    Статистика Avg Stdev Max

    экв / сек 9625,47 1759,59 13165,59

    Задержка 25,94 мс 498,77 мс 73,96 мс

    HTTP-коды:

    1xx - 0, 2xx - 289210, 3xx - 0, 4xx - 0, 5xx - 0

    другие - 0

    Пропускная способность: 1,70 МБ / с

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...