Rust编写的HTTP服务器性能竟然远超Nginx

今天进行了在HTTP服务器上的性能对比测试,Rust的性能竟然是Nginx的两倍,真是震惊到我了。。。。

自从两个月前我在gitee上发布了开源HTTP服务器软件Module Proxy后,一直没来得及进行性能的压力测试,今天得空补上这一环。

测试环境

工作笔记本,AMD锐龙处理器 R7 4800U,8核16线程。主操作系统 windows10,虚机安装CentOS7,分配4核CPU。

测试客户端:apache ab 程序,运行在宿主机windows上。

测试对象:Nginx 和 Module Proxy 两款HTTP服务软件, 运行在虚机Linux上,按默认安装配置启动服务。

测试计划

进行静态html的压力测试,测试的html文件大约1K字节。

分别用ab进行10万次的压力测试,测试进行三轮,配置不同的并发线程数:

ab -n 100000 -c 1  http://192.168.152.128/test.html          #无并发
ab -n 100000 -c 5  http://192.168.152.128/test.html          #并发5线程
ab -n 100000 -c 10 http://192.168.152.128/test.html          #并发10线程

记录测试总时长,每秒传输字节数,CPU使用量三个参数。

测试结果

  Nginx Module Proxy
总时长(秒) 传输效率(Kbytes/sec) CPU使用量 总时长(秒) 传输效率(Kbytes/sec) CPU使用量
1线程 172.4 802.70 10% 205.5 611.18 44%
5线程 65.4 2117.48 24% 30.7 4096.63 140%
10线程 71.0 1950.02 19%~29% 26.1 4808.24 160%

Nginx在单线程时性能领先Module Proxy,总时长和传输效率都领先。

5线程并发,Module Proxy差不多比Nginx快两倍。

10线程时,已超出了Nginx的性能上限,CPU使用量在19%~29%之间跳跃,这时Nginx已不在线性工作区间内,因此性能还不如5线程并发;而Modue Proxy仍体现了良好的线性,两者之间的性能对比已无多大意义。

结论分析

Nginx一直以高性能著称,测试结果确实震惊了我。

Module Proxy是Rust语言开发的HTTP服务软件,除了Rust本身不弱于C语言的性能外,取得如此成绩主要是使用了事件驱动的非阻塞I/O库Tokio。Tokio是基于多线程,由操作系统的事件队列(epoll,kqueue,IOCP等)支持的任务调度库,Tokio也是Rust编程语言编写的,它本身就非常快。

Module Proxy 不仅仅能搭建静态HTTP网站,最大特点是反向代理,能将HTTP代理转发为Socket,相关信息可从下面网站获取:

posted @   dyf029  阅读(1151)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示