D的独立HttpBench,还是TechEmpower的测试在说谎?

简单Web基准测试启发用于其他多种语言的图表),这是一个用于测试HTTP服务器的简单框架,但重点是dlang框架和库。



它以纯文本脚本度量可实现的RPS(每秒请求数)。



已经从各个地方(包括TechEmpower收集或修改了测试



它使用docker容器构建和托管服务,并且可以在本地运行或使用远程主机上的负载测试器。



缺省的负载生成器是wrk,它向收集器请求统计信息,但是也支持hey(只需使用--tool开关)。



测试可以在没有docker的情况下运行,您只需安装用于测试语言的编译器和wrk / hey引导生成器(但仅在Linux上进行测试)。



io_uring测试注意事项:



  • 这些测试至少需要Linux 5.7内核。
  • 当以普通用户运行时,用户锁定的内存限制(ulimit -l)也可能存在问题。
  • 内核5.7.16开始,已经观察到一些性能下降另请参阅Bug #189#8


测验



测试分为两种类型:



  • singleCore-服务以单核模式运行,以在没有多个线程/进程的情况下评估性能(默认)。
  • multiCore-服务开始使用所有主机处理器内核


使用



建立一个容器来运行



  • 建立-建立容器
  • make shell-启动容器

    注意:此命令将性能调控器设置为性能模式。


运行测试



对于测试很愚蠢,只需从(在容器外壳中)运行一个命令即可:



make all        # runs all tests
make single     # runs tests limited to single CPU core usage
make multi      # runs tests limited to multiple CPU cores usage


_suite/runner.d CLI-.



  • _suite/runner.d list — -
  • _suite/runner.d bench
  • _suite/runner.d responses
  • _suite/runner.d versions — Markdown

    _suite/runner.d -h CLI .


:



_suite/runner.d bench --type singleCore dlang rust #     dlang  rust 




(. ), CLI .



:



  • , , .
  • - _suite/runner.d bench --type singleCore -r foo@192.168.0.3 --host 192.168.0.2 dlang


-r --remote , ssh. --host , CLI IP , , .



ssh , ssh ( ).



(hey) .



, , .



/



Techempower .



, .



  • (.. ..)
  • HTTP-


, , , , , .



C



. HTTP-, eventloop .



epoll io_uring. raw.



dlang



arsd-official



. http :



  • process — , .
  • threads — threadpool
  • hybrid — Linux , .


singeCore, ( ) eventloop, (.. CGI) .



. — .



during



  • raw — , , ( , ,… — )

    TBD — / io_uring, epoll Linux-.


epoll



, , . , — , during/raw



eventcore



, vibe-d. epoll linux (iocp kqueue windows MacOS).



, http , , .



  • callbacks — .
  • fibers —


hunt





lighttp



code.dlang.org, .



, .



mecca



Weka.



.



: druntime, . . , .



photon



code.dlang.org, , syscalls glibc epoll eventloop , .



nodejs http-parser ( , pico) .



vibe-core



, eventcore .



- , TCPConnection , .



, http .



vibe-d



- dlang, .



dotnet



ASP.Net Core.



, ( , , ...). .. , .



golang



fasthttp .



HTTP , .



rust



Actix :



  • actix-web —
  • actix-raw —




Single core results ()



: AMD Ryzen 7 3700X 8-Core, kernel 5.8.10

: Intel® Core(TM) i5-5300U CPU @ 2.30GHz, kernel 5.8.9

: 1Gbps through cheap gigabit switch

: for i in 8 64 128 256; do _suite/runner.d bench --type singleCore --tool wrk -b 2 -d 120 -c $i -r tomas@10.0.0.2; done





go go1.15.1
ldc2 1.23.0
rust 1.48.0-nightly
dotnet 5.0.100-rc.1.20452.10


来自译者表格的完整版本及其结果可以在原始版本中查看但是所有内容显然都没有混合在一起,因此我对两类在2分钟内处理的请求数量(比例要求和rps成比例)进行了更为直观的​​图形化-无需调整的成熟框架以及所有其他内容,包括基本库。还有两个结果-8个工作人员和256个显示扩展性。







是的,TechEmpower的测试将经过调整的版本与通常的版本进行了混合,在很多地方都非常出色。




All Articles