mongols C++ 服务器基础设施开源项目

我要开发同款
匿名用户2018年07月23日
119阅读

技术信息

开源地址
https://github.com/webcpp/mongols
授权协议
MPL-2.0

作品详情

mogols 是一个C++库。

依赖:

liux

pcre-devel

hiredis-devel

zlib-devel

opessl-devel

curl-devel

sudo yum istall pcre-devel zlib-devel opessl-devel hiredis-devel libcurl-devel

或者:

sudo apt-get istall libpcre3-dev zlib1g-dev libssl-dev libhiredis-dev libcurl4-opessl-dev特性:

epollorepoll+multi-threadig

tcpsever

httpserver

websocketserver

webserver

leveldbserver

luaserver

sqliteserver

utils

安装:

makeclea&&make-j2&&sudomakeistall&&sudoldcofig

使用:

pkg-cofig--libs--cflagsmogols

例子:#iclude<mogols/tcp_server.hpp>#iclude<mogols/tcp_threadig_server.hpp>#iclude<mogols/http_server.hpp>#iclude<mogols/ws_server.hpp>#iclude<mogols/web_server.hpp>#iclude<mogols/leveldb_server.hpp>#iclude<mogols/util.hpp>#iclude/*//websocket serverit mai(it,char**){it port=9090;cost char* host="127.0.0.1";mogols::ws_server server(host,port,5000,2048,4);auto f=[](cost std::strig& iput            , bool& keepalive            , bool& sed_to_other            , mogols::tcp_server::cliet_t& cliet            , mogols::tcp_server::filter_hadler_fuctio& sed_to_other_filter){keepalive = KEEPALIVE_CONNECTION;sed_to_other=true;if(iput=="close"){keepalive = CLOSE_CONNECTION;sed_to_other = false;}};server.ru(f);//server.ru();}*//*//tcp server or tcp multi-threadig serverit mai(it,char**){auto f=[](cost std::strig& iput , bool & keepalive                , bool& sed_to_other                , mogols::tcp_server::cliet_t& cliet                , mogols::tcp_server::filter_hadler_fuctio& sed_to_other_filter){keepalive= KEEPALIVE_CONNECTION;sed_to_other=true;retur iput;};it port=9090;cost char* host="127.0.0.1";//mogols::tcp_threadig_servermogols::tcp_serverserver(host,port);server.ru(f);}*///http server or multi-threadig serverit mai(it,char**){auto f=[](cost mogols::request&){retur true;};auto g=[](cost mogols::request& req,mogols::respose& res){//std::uordered_map::cost_iterator i;//if((i=req.sessio.fid("test"))!=req.sessio.ed()){//log test=std::stol(i->secod)+1;//res.cotet=std::to_strig(test);//res.sessio["test"]=res.cotet;//}else{//res.cotet=std::to_strig(0);;//res.sessio["test"]=res.cotet;//}res.cotet=std::move("hello,world");res.status=200;};it port=9090;cost char* host="127.0.0.1";mogols::http_server //server(host,port,5000,1024,4);server(host,port);server.set_eable_sessio(false);server.set_eable_cache(false);server.ru(f,g);}/*//web server or multi-threadig serverit mai(it,char**){auto f=[](cost mogols::request&){if(req.method=="GET"&&req.uri.fid("..")==std::strig::pos){retur true;}retur false;};it port=9090;cost char* host="127.0.0.1";mogols::web_server //server(host,port,5000,1024,4);server(host,port);server.set_root_path("html");server.set_mime_type_file("mime.cof");server.set_list_directory(true);server.ru(f);}*//*//leveldb_server or multi-threadig serverit mai(it,char**){it port=9090;cost char* host="127.0.0.1";mogols::leveldb_server //server(host,port,5000,1024,4);server(host,port);server.ru("html/leveldb");}*/

压力测试:

[cetos@localhost demo]$ uame -aLiux localhost 3.10.0-862.9.1.el7.x86_64 #1 SMP Mo Jul 16 16:29:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Liux[cetos@localhost demo]$ cat /proc/cpuifo| grep "processor"| wc -l4[cetos@localhost demo]$ cat /proc/cpuifo| grep "cpu cores"| uiqcpu cores: 2[cetos@localhost demo]$ cat /proc/cpuifo| grep "physical id"| sort| uiq| wc -l1ab-c1000-100000https://127.0.0.1:9090/Server Software:        mogols/0.9.0Server Hostame:        127.0.0.1Server Port:            9090Documet Path:          /Documet Legth:        13 bytesCocurrecy Level:      1000Time take for tests:   8.180 secodsComplete requests:      100000Failed requests:        0Write errors:           0Keep-Alive requests:    0Total trasferred:      13300000 bytesHTML trasferred:       1300000 bytesRequests per secod:    12225.00 [#/sec] (mea)Time per request:       81.800 [ms] (mea)Time per request:       0.082 [ms] (mea, across all cocurret requests)Trasfer rate:          1587.82 [Kbytes/sec] receivedCoectio Times (ms)              mi  mea[+/-sd] media   maxCoect:        0   66 263.3      7    3020Processig:     2   11  11.9      9     831Waitig:        0    8  11.5      7     829Total:          6   77 265.8     16    3033Percetage of the requests served withi a certai time (ms)  50%     16  66%     20  75%     22  80%     23  90%     29  95%   1017  98%   1025  99%   1030 100%   3033 (logest request)ab-kc1000-100000-H'Coectio:keep-alive'https://127.0.0.1:9090/Server Software:        mogols/0.9.0Server Hostame:        127.0.0.1Server Port:            9090Documet Path:          /Documet Legth:        13 bytesCocurrecy Level:      1000Time take for tests:   1.935 secodsComplete requests:      100000Failed requests:        0Write errors:           0Keep-Alive requests:    100000Total trasferred:      13800000 bytesHTML trasferred:       1300000 bytesRequests per secod:    51671.74 [#/sec] (mea)Time per request:       19.353 [ms] (mea)Time per request:       0.019 [ms] (mea, across all cocurret requests)Trasfer rate:          6963.57 [Kbytes/sec] receivedCoectio Times (ms)              mi  mea[+/-sd] media   maxCoect:        0    0   3.2      0      48Processig:     8   19   1.4     18      48Waitig:        0   19   1.4     18      25Total:          8   19   3.1     18      64Percetage of the requests served withi a certai time (ms)  50%     18  66%     19  75%     19  80%     19  90%     20  95%     21  98%     23  99%     28 100%     64 (logest request)

功能介绍

mongols 是一个 C++ 库。 依赖: linux pcre-devel hiredis-devel zlib-devel openssl-devel curl-devel
sudo ...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论