# WebServer
用C++实现的高性能WEB服务器,经过webbenchh压力测试可以实现上万的QPS
## 功能
* 利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型;
* 利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求;
* 利用标准库容器封装char,实现自动增长的缓冲区;
* 基于小根堆实现的定时器,关闭超时的非活动连接;
* 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态;
* 利用RAII机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登录功能。
* 增加logsys,threadpool测试单元(todo: timer, sqlconnpool, httprequest, httpresponse)
## 环境要求
* Linux
* C++14
* MySql
## 目录树
```
.
├── code 源代码
│ ├── buffer
│ ├── config
│ ├── http
│ ├── log
│ ├── timer
│ ├── pool
│ ├── server
│ └── main.cpp
├── test 单元测试
│ ├── Makefile
│ └── test.cpp
├── resources 静态资源
│ ├── index.html
│ ├── image
│ ├── video
│ ├── js
│ └── css
├── bin 可执行文件
│ └── server
├── log 日志文件
├── webbench-1.5 压力测试
├── build
│ └── Makefile
├── Makefile
├── LICENSE
└── readme.md
```
## 项目启动
需要先配置好对应的数据库
```bash
// 建立yourdb库
create database yourdb;
// 创建user表
USE yourdb;
CREATE TABLE user(
username char(50) NULL,
password char(50) NULL
)ENGINE=InnoDB;
// 添加数据
INSERT INTO user(username, password) VALUES('name', 'password');
```
```bash
make
./bin/server
```
## 单元测试
```bash
cd test
make
./test
```
## 压力测试
![image-webbench](https://github.com/markparticle/WebServer/blob/master/readme.assest/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95.png)
```bash
./webbench-1.5/webbench -c 100 -t 10 http://ip:port/
./webbench-1.5/webbench -c 1000 -t 10 http://ip:port/
./webbench-1.5/webbench -c 5000 -t 10 http://ip:port/
./webbench-1.5/webbench -c 10000 -t 10 http://ip:port/
```
* 测试环境: Ubuntu:19.10 cpu:i5-8400 内存:8G
* QPS 10000+
## TODO
* config配置
* 完善单元测试
* 实现循环缓冲区
## 致谢
Linux高性能服务器编程,游双著.
[@qinguoyi](https://github.com/qinguoyi/TinyWebServer)
没有合适的资源?快使用搜索试试~ 我知道了~
C++ Linux WebServer服务器
共77个文件
h:13个
html:11个
cpp:11个
需积分: 5 0 下载量 109 浏览量
2024-05-13
00:38:46
上传
评论
收藏 38.88MB ZIP 举报
温馨提示
C++ Linux WebServer服务器 用C++实现的高性能WEB服务器,经过webbenchh压力测试可以实现上万的QPS 功能 利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型; 利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求; 利用标准库容器封装char,实现自动增长的缓冲区; 基于小根堆实现的定时器,关闭超时的非活动连接; 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态; 利用RAII机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登录功能。 增加logsys,threadpool测试单元(todo: timer, sqlconnpool, httprequest, httpresponse) 环境要求 Linux C++14 MySql 目录树 . ├── code 源代码 │ ├── buffer │ ├── config │ ├── http │ ├── log │ ├── timer │ ├── pool │ ├── serv
资源推荐
资源详情
资源评论
收起资源包目录
C++ Linux WebServer服务器.zip (77个子文件)
resources
register.html 3KB
welcome.html 3KB
video.html 3KB
403.html 3KB
js
bootstrap.min.js 36KB
jquery.magnific-popup.min.js 20KB
magnific-popup-options.js 1KB
smoothscroll.js 4KB
wow.min.js 7KB
custom.js 1KB
jquery.js 84KB
css
style.css 10KB
bootstrap.min.css 118KB
magnific-popup.css 7KB
animate.css 71KB
font-awesome.min.css 27KB
login.html 3KB
404.html 3KB
picture.html 4KB
index.html 3KB
405.html 3KB
error.html 3KB
images
instagram-image4.jpg 101KB
instagram-image5.jpg 48KB
instagram-image2.jpg 66KB
profile-image.jpg 46KB
instagram-image3.jpg 58KB
favicon.ico 60KB
instagram-image1.jpg 74KB
400.html 3KB
video
xxx.mp4 37.83MB
fonts
FontAwesome.otf 107KB
fontawesome-webfont.eot 69KB
fontawesome-webfont.woff 82KB
fontawesome-webfont.woff2 65KB
fontawesome-webfont.svg 357KB
fontawesome-webfont.ttf 139KB
Makefile 37B
readme.assest
压力测试.png 38KB
LICENSE 11KB
readme.md 2KB
build
Makefile 350B
备注
test
Makefile 341B
readme.md 12B
test.cpp 1KB
.gitignore 82B
webbench-1.5
Makefile 1KB
webbench.c 11KB
socket.c 1KB
code
pool
sqlconnpool.h 795B
sqlconnRAII.h 590B
readme.md 6B
sqlconnpool.cpp 2KB
threadpool.h 2KB
readme.md 6B
timer
heaptimer.cpp 3KB
readme.md 6B
heaptimer.h 1KB
main.cpp 537B
http
httprequest.h 2KB
readme.md 89B
httprequest.cpp 7KB
httpconn.h 1KB
httpresponse.h 1KB
httpconn.cpp 3KB
httpresponse.cpp 5KB
server
epoller.cpp 1KB
webserver.h 2KB
epoller.h 705B
webserver.cpp 8KB
log
log.h 2KB
readme.md 0B
blockqueue.h 3KB
log.cpp 5KB
config
config.h 86B
buffer
buffer.cpp 3KB
buffer.h 1KB
共 77 条
- 1
资源评论
程序媛小y
- 粉丝: 5614
- 资源: 121
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功