qinguoyi / TinyWebServer
- среда, 20 мая 2020 г. в 00:25:34
C++
🔥 Linux下C++轻量级Web服务器
Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.
概述 | 框架 | Demo演示 | 压力测试 | 更新与下载 | 快速运行 | 个性化运行 | 庖丁解牛 | 致谢 |
---|
- 注册演示
- 登录演示
- 请求图片文件演示(6M)
- 请求视频文件演示(39M)
在关闭日志后,使用Webbench对服务器进行压力测试,在ET和LT模式下均可实现上万的并发连接.
- Proactor,LT,84016 QPS
- Proactor,ET,83419 QPS
- Reactor,LT,60218 QPS
- Reactor,ET,58138 QPS
- 并发连接总数:10500
- 访问服务器时间:5s
- 所有访问均成功
注意: 使用本项目的webbench进行压测时,若报错显示webbench命令找不到,将可执行文件webbench删除后,重新编译即可。
lock.h
中的封装类,统一使用该同步机制目前有两个版本,版本间的代码结构有较大改动,文档和代码运行方法也不一致. 重构版本更简洁,原始版本(raw_version)更大保留游双代码的原汁原味,从原始版本更容易入手.
如果遇到github代码下载失败,或访问太慢,可以从以下链接下载,与Github最新提交同步.
服务器测试环境
浏览器测试环境
测试前确认已安装MySQL数据库
// 建立yourdb库
create database yourdb;
// 创建user表
USE yourdb;
CREATE TABLE user(
username char(50) NULL,
passwd char(50) NULL
)ENGINE=InnoDB;
// 添加数据
INSERT INTO user(username, passwd) VALUES('name', 'passwd');
修改main.cpp中的数据库初始化信息
//数据库登录名,密码,库名
string user = "root";
string passwd = "root";
string databasename = "yourdb";
build
sh ./build.sh
启动server
./server
浏览器端
ip:9006
./server [-p port] [-v SQLVerify] [-l LOGWrite] [-m TRIGMode] [-o OPT_LINGER] [-s sql_num] [-t thread_num] [-c close_log] [-a actor_model]
温馨提示:以上参数不是非必须,不用全部使用,根据个人情况搭配选用即可.
测试示例命令与含义
./server -p 9007 -v 1 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1
近期版本迭代较快,以下内容多以旧版本(raw_version)代码为蓝本进行详解,重构版本讲解将于下月重制发布,感谢理解.
Linux高性能服务器编程,游双著.
感谢以下朋友的PR和帮助: @RownH,@mapleFU,@ZWiley,@zjuHong,@mamil,@byfate,@MaJun827,@BBLiu-coder,@smoky96,@yfBong.