现在是年,是时候进行一次新的Web服务器基准测试了!结果对我来说有些出乎意料!
一个Web服务器必须能够处理大量请求,尽管瓶颈在于IO。这次我决定比较最流行的、速度极快的现代框架的性能。
以下是有关实现细节的许多详细信息。如果您只想了解结果,请直接前往文章底部以节省时间。如果您对测试的执行方式感兴趣,请继续阅读:)我们的瓶颈将是一个带有一些数据的Postgs数据库。因此,我们的Web服务器必须能够在不阻塞的情况下尽可能多地处理每秒请求数。在接收到数据后,它应该将答案序列化为JSON并返回有效的HTTP响应。
将测试哪些技术
*SpringWebFlux+Kotlin-传统的JVM-GraalVM原生映像*NodeJS+Expss*Rust-Rocket-ActixWeb
我的配置
CPU:IntelCoi7–K3.60GHz(8个核心,无超线程)RAM:32GB操作系统:Windows11(版本22h2)Docker:DockerforDesktop(Windows版)版本4.16.3,启用了WSL2支持-由Microsoft提供的默认资源配置Postgs:使用以下Docker命令启动
dockerrun-d--namemy-postgs-ePOSTGRES_PASSWORD=postgs-ePOSTGRES_USER=postgs-ePOSTGRES_DB=goods-p:postgs:15.2
数据库连接池大小:最多50个连接。每个Web服务器都将使用此数量以保持相同的条件。
数据库初始化:
CREATETABLEgoods(idBIGSERIALNOTNULLPRIMARYKEY,nameVARCHAR()NOTNULL,descriptionTEXTNULL,priceINTNOTNULL);INSERTINTOgoods(name,description,price)VALUES(Apple,Redfruit,),(Orange,Orangefruit,),(Banana,Yellowfruit,),(Pineapple,Yellowfruit,),(Melon,Genfruit,);
我决定不在数据库中存储太多的数据,以避免对数据库性能产生影响。我假设Postgs能够缓存所有的数据,并且大部分时间都将用于网络IO。
基准测试工具集
import