网络库压力测试:mongols VS evpp
evpp是360出品的一个网络库,基于libevent,进行了许多改造,对c++11友好。据称比libevent性能要好。
到底有多好呢?360开发人员有自己的测试,信不信由你。
evpp源码下有个httpecho演示,我把它改为hello,world的样子:
void DefaultHandler(evpp::EventLoop* loop,
const evpp::http::ContextPtr& ctx,
const evpp::http::HTTPSendResponseCallback& cb) {
std::stringstream oss;
/*oss << "func=" << __FUNCTION__ << " OK"
<< " ip=" << ctx->remote_ip() << "\n"
<< " uri=" << ctx->uri() << "\n"
<< " body=" << ctx->body().ToString() << "\n";*/
oss <<"hello,world";
//ctx->AddResponseHeader("Content-Type", "application/octet-stream");
ctx->AddResponseHeader("Content-Type", "text/html;charset=UTF-8");
ctx->AddResponseHeader("Server", "evpp");
cb(oss.str());
}
然后设置线程数为4,匹配我的笔记本。
build,运行下,端口在29099。
进而进行ab压力测试:
分别是:
- ab -kc100 -n100000 http://127.0.0.1:29099/
- ab -kc500 -n100000 http://127.0.0.1:29099/
- ab -kc800 -n100000 http://127.0.0.1:29099/
- ab -kc1000 -n100000 http://127.0.0.1:29099/
前三个跑的比较好,最后一个基本跑不动,报
[warn] Error from accept() call: Too many open files
前三个的RPS保持在[29000,36000)区间,确实比libevent要好些。但绝对没有360开发人员宣传的那么好:
该图显示evpp对多个网络库进行了对比。对此,我只能说,其他库本就没有那么好。
同样的输出,同样的线程数,mongols的测试数据都要优于evpp,RPS在[38000,42000)区间。如果使用单线程,mongols的RPS基本42000+。而且,mongols的内存占用仅仅为evpp的1/4。
一句话,不要迷信大厂!如图:
重要的事情应该再说一遍:
不要迷信大厂!
网络库压力测试:mongols VS evpp的更多相关文章
- linux下的CPU、内存、IO、网络的压力测试
linux下的CPU.内存.IO.网络的压力测试 要远程测试其实很简单了,把结果放到一个微服务里直接在web里查看就可以了,或者同步到其他服务器上 一.对CPU进行简单测试: 1.通过bc命令计算特 ...
- [转帖]linux下的CPU、内存、IO、网络的压力测试
linux下的CPU.内存.IO.网络的压力测试 https://www.cnblogs.com/zhuochong/p/10185881.html 一.对CPU进行简单测试: 1.通过bc命令计算特 ...
- [转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具
linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关 ...
- Linux系统下的CPU、内存、IO、网络的压力测试
本文转载自:小豆芽博客 一.对CPU进行简单测试: 1.通过bc命令计算特别函数 例:计算圆周率 echo "scale=5000; 4*a(1)" | bc -l -q MATH ...
- 转://linux下的CPU、内存、IO、网络的压力测试工具与方法介绍
转载地址:http://wushank.blog.51cto.com/3489095/1585927 一.对CPU进行简单测试: 1.通过bc命令计算特别函数 例:计算圆周率 echo "s ...
- [转贴]LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
https://blog.csdn.net/melody157398/article/details/24354415 LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---I ...
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project Peter盼 2014-04-23 11:25:49 20302 收藏 ...
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 内核更新 稳定性测试
LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33721人阅读2011-12-09 12:07:45 说明:在写这篇文章之前,本人也不曾了 ...
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 ltp-pan
LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33710人阅读2011-12-09 12:07:45 说明:在写这篇文章之前,本人也不曾了 ...
随机推荐
- svn提交按钮灰选
1.当我新建了一个文件或者文件夹,要提交的时候出现ok按钮灰选,提交不了. 解决方法:提交信息多写一些字儿就可以了,挥着回车换行也行 2.报错:you need to upgrade the work ...
- swust oj 971
统计利用先序遍历创建的二叉树的深度 10000(ms) 10000(kb) 3331 / 8436 利用先序递归遍历算法创建二叉树并计算该二叉树的深度.先序递归遍历建立二叉树的方法为:按照先序递归遍历 ...
- JDBC的理解
import java.sql.*;//倒入java.sql包 public class JDBC { //封装没有返回值的jdbc函数(Update) --适用于增 删 改 public stati ...
- 在区块链侧链上进行Dapp技术开发
我在白皮书里提到过,asch使用的是不同于以太坊和比特币的侧链架构,dapp是运行在侧链上的,每套侧链对应一个dapp. 侧链的独立性 侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨 ...
- pta第一次总结
1).实验代码 include<stdio.h> int main() { int n,i,j,a1,a2,b1,b2,sum,x,k; char c; while(~scanf(&quo ...
- SpringBoot中使用springfox+swagger2书写API文档
随着前后端的分离,借口文档变的尤其重要,springfox是通过注解的形式自动生成API文档,利用它,可以很方便的书写restful API,swagger主要用于展示springfox生成的API文 ...
- JDK安装路径下的JRE与独立安装的JRE区别
在JDK安装目录下的子文件下,已经默认安装了一个jre.且与独立安装的JRE6所包含的文件几乎完全一样. JDK里面内置的JRE和独立的JRE是有一点差别的: 在JDK安装文件中包含了一个完整的独立版 ...
- Fiddler抓包请求前设置断点
1. 开启抓包 file--->capture traffic2. 在页面底部黑框输入bpu http://www.runoob.com/?s=mysql3. 在浏览器URL输入http://w ...
- filter 过滤器的基本使用
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- 系统重启后,mr程序不生成当前时间段的MRx文件问题
系统重启后,mr程序不生成当前时间段的MRx文件问题 2019-4-2 之前使用正常的MR程序,系统重启后无法生成MRE\MRO\MRS文件. 服务器有两个时钟:硬件时钟和系统时钟 硬件时钟从根本上讲 ...