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

原创
2021/12/07 18:36
阅读数 373

今天进行了在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,总时长和传输效率都领先。

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,相关信息可从下面网站获取:

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部