# HttpServer
用C++实现的高性能WEB服务器,经过webbench压力测试可以实现近万的QPS
## 功能
* 利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型;
* 利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求;
* 利用标准库容器封装char,实现自动增长的缓冲区;
* 基于小根堆实现的定时器,关闭超时的非活动连接;
* 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态;
* 利用RAII机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登录功能。
## 环境要求
* 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:18.04 cpu:R5-5600H 内存:16G
* QPS 10000
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Linux项目是一个开放源代码的操作系统项目,由林纳斯·托瓦兹(Linus Torvalds)于1991年首次发布。该项目以Linux内核为核心,围绕其构建了一个完整的操作系统,包括各种系统工具、库、应用程序和硬件支持。 以下是Linux项目的一些主要特点和资料介绍: 开放源代码:Linux项目的所有源代码都是公开的,并允许任何人自由使用和修改。这为开发者提供了极大的灵活性和创新能力,同时也促进了全球范围内的协作和发展。 跨平台性:Linux操作系统可以在多种硬件架构和平台上运行,包括x86、ARM、MIPS等。这使得Linux成为了一种非常灵活的操作系统,适用于各种设备和应用场景。 可定制性:由于Linux的源代码是公开的,用户可以根据自己的需求进行定制和修改。这使得Linux成为了一种非常适合企业级应用的操作系统,可以根据企业的特定需求进行定制和优化。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
资源推荐
资源详情
资源评论
收起资源包目录
linux项目工程资料-基于linux,利用c++开发的轻量级http服务器,能承受近万的QPS.zip (156个子文件)
webbench.c 11KB
socket.c 1KB
webserver.cpp 9KB
webserver.cpp 9KB
httprequest.cpp 7KB
httprequest.cpp 7KB
httpresponse.cpp 5KB
httpresponse.cpp 5KB
log.cpp 5KB
log.cpp 5KB
buffer.cpp 3KB
buffer.cpp 3KB
heaptimer.cpp 3KB
heaptimer.cpp 3KB
httpconn.cpp 3KB
httpconn.cpp 3KB
sqlconnpool.cpp 2KB
sqlconnpool.cpp 2KB
epoller.cpp 1KB
epoller.cpp 1KB
main.cpp 585B
main.cpp 585B
bootstrap.min.css 118KB
bootstrap.min.css 118KB
animate.css 71KB
animate.css 71KB
font-awesome.min.css 27KB
font-awesome.min.css 27KB
style.css 10KB
style.css 10KB
magnific-popup.css 7KB
magnific-popup.css 7KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
fontawesome-webfont.eot 69KB
fontawesome-webfont.eot 69KB
.gitignore 12B
blockqueue.h 3KB
blockqueue.h 3KB
threadpool.h 2KB
threadpool.h 2KB
webserver.h 2KB
webserver.h 2KB
httprequest.h 2KB
httprequest.h 2KB
log.h 2KB
log.h 2KB
httpresponse.h 1KB
httpresponse.h 1KB
buffer.h 1KB
buffer.h 1KB
heaptimer.h 1KB
heaptimer.h 1KB
httpconn.h 1KB
httpconn.h 1KB
sqlconnpool.h 1KB
sqlconnpool.h 1KB
epoller.h 807B
epoller.h 807B
sqlconnRAII.h 590B
sqlconnRAII.h 590B
picture.html 4KB
picture.html 4KB
login.html 3KB
login.html 3KB
register.html 3KB
register.html 3KB
video.html 3KB
video.html 3KB
error.html 3KB
error.html 3KB
welcome.html 3KB
welcome.html 3KB
404.html 3KB
405.html 3KB
404.html 3KB
405.html 3KB
index.html 3KB
index.html 3KB
400.html 3KB
400.html 3KB
403.html 3KB
403.html 3KB
favicon.ico 60KB
favicon.ico 60KB
instagram-image1.jpg 914KB
instagram-image1.jpg 914KB
instagram-image4.jpg 800KB
instagram-image4.jpg 800KB
instagram-image3.jpg 481KB
instagram-image3.jpg 481KB
instagram-image2.jpg 401KB
instagram-image2.jpg 401KB
instagram-image5.jpg 104KB
共 156 条
- 1
- 2
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功