电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
创作
电子发烧友网>电子资料下载>电子资料>mongols C++服务器基础设施

mongols C++服务器基础设施

2022-06-23 | zip | 4.73 MB | 次下载 | 免费

资料介绍

授权协议 MPL-2.0
开发语言 C/C++
软件类型 开源软件
所属分类 程序开发高性能网络开发库

软件简介

mongols 是一个 C++ 库。

依赖:

  • linux

  • pcre-devel

  • hiredis-devel

  • zlib-devel

  • openssl-devel

  • curl-devel

sudo yum install pcre-devel zlib-devel openssl-devel hiredis-devel libcurl-devel

或者:

sudo apt-get install libpcre3-dev zlib1g-dev libssl-dev libhiredis-dev libcurl4-openssl-dev

特性:

epoll or epoll + multi-threading

  • tcp sever

  • http server

  • websocket server

  • web server

  • leveldb server

  • lua server

  • sqlite server

  • utils

安装:

make clean && make -j2 && sudo make install && sudo ldconfig

使用:

pkg-config --libs --cflags mongols

例子:

#include#include#include#include#include#include#include#include/*
//websocket server
int main(int,char**){
int port=9090;
const char* ;
mongols::ws_server server(host,port,5000,2048,4);

auto f=[](const std::string& input
            , bool& keepalive
            , bool& send_to_other
            , mongols::tcp_server::client_t& client
            , mongols::tcp_server::filter_handler_function& send_to_other_filter){
keepalive = KEEPALIVE_CONNECTION;
send_to_other=true;
if(){
keepalive = CLOSE_CONNECTION;
send_to_other = false;
}
};
server.run(f);
//server.run();
}
*/


/*
//tcp server or tcp multi-threading server
int main(int,char**)
{
auto f=[](const std::string& input
 , bool & keepalive
                , bool& send_to_other
                , mongols::tcp_server::client_t& client
                , mongols::tcp_server::filter_handler_function& send_to_other_filter){
keepalive= KEEPALIVE_CONNECTION;
send_to_other=true;
return input;
};
int port=9090;
const char* ;

//mongols::tcp_threading_server
mongols::tcp_server

server(host,port);
server.run(f);

}
*/




//http server or multi-threading server
int main(int,char**)
{
auto f=[](const mongols::request&){
return true;
};
auto g=[](const mongols::request& req,mongols::response& res){
//std::unordered_map::const_iterator i;
//if((i=req.session.find("test"))!=req.session.end()){
//long test=std::stol(i->second)+1;
//res.content=std::to_string(test);
//res.session["test"]=res.content;
//}else{
//res.content=std::to_string(0);;
//res.session["test"]=res.content;
//}
res.content=std::move("hello,world");
res.status=200;
};
int port=9090;
const char* ;
mongols::http_server 
//server(host,port,5000,1024,4);
server(host,port);
server.set_enable_session(false);
server.set_enable_cache(false);
server.run(f,g);
}

/*
//web server or multi-threading server
int main(int,char**)
{
auto f=[](const mongols::request&){
if(req.&&req.uri.find("..")==std::string::npos){
return true;
}
return false;
};
int port=9090;
const char* ;
mongols::web_server 
//server(host,port,5000,1024,4);
server(host,port);
server.set_root_path("html");
server.set_mime_type_file("mime.conf");
server.set_list_directory(true);
server.run(f);
}
*/

/*
//leveldb_server or multi-threading server
int main(int,char**){
int port=9090;
const char* ;
mongols::leveldb_server 
//server(host,port,5000,1024,4);
server(host,port);
server.run("html/leveldb");
}
*/

压力测试:

[centos@localhost demo]$ uname -a
Linux localhost 3.10.0-862.9.1.el7.x86_64 #1 SMP Mon Jul 16 16:29:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[centos@localhost demo]$ cat /proc/cpuinfo| grep "processor"| wc -l
4
[centos@localhost demo]$ cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores: 2
[centos@localhost demo]$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1

ab -c1000 -n100000 http://127.0.0.1:9090/

Server Software:        mongols/0.9.0
Server Hostname:        127.0.0.1
Server Port:            9090

Document Path:          /
Document Length:        13 bytes

Concurrency Level:      1000
Time taken for tests:   8.180 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    0
Total transferred:      13300000 bytes
HTML transferred:       1300000 bytes
Requests per second:    12225.00 [#/sec] (mean)
Time per request:       81.800 [ms] (mean)
Time per request:       0.082 [ms] (mean, across all concurrent requests)
Transfer rate:          1587.82 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   66 263.3      7    3020
Processing:     2   11  11.9      9     831
Waiting:        0    8  11.5      7     829
Total:          6   77 265.8     16    3033

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     20
  75%     22
  80%     23
  90%     29
  95%   1017
  98%   1025
  99%   1030
 100%   3033 (longest request)

ab -kc1000 -n100000 -H'Connection: keep-alive' http://127.0.0.1:9090/

Server Software:        mongols/0.9.0
Server Hostname:        127.0.0.1
Server Port:            9090

Document Path:          /
Document Length:        13 bytes

Concurrency Level:      1000
Time taken for tests:   1.935 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    100000
Total transferred:      13800000 bytes
HTML transferred:       1300000 bytes
Requests per second:    51671.74 [#/sec] (mean)
Time per request:       19.353 [ms] (mean)
Time per request:       0.019 [ms] (mean, across all concurrent requests)
Transfer rate:          6963.57 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   3.2      0      48
Processing:     8   19   1.4     18      48
Waiting:        0   19   1.4     18      25
Total:          8   19   3.1     18      64

Percentage of the requests served within a certain time (ms)
  50%     18
  66%     19
  75%     19
  80%     19
  90%     20
  95%     21
  98%     23
  99%     28
 100%     64 (longest request)
 

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费