项目简介
本项目是基于C++实现的轻量级HTTP服务器。仿照muduo网络库架构,综合运用C++、TCP/IP协议、网络编程的IO模型、多线程编程等知识,实现功能齐全的HTTP服务器。该服务器支持GET和HEAD请求,支持长连接和管线化,具备异步日志功能。
项目的主要特性和功能
- Reactor模式:采用事件驱动模型,用function+bind实现事件回调处理网络事件。
- Epoll LT模式:使用Epoll的LT模式进行IO复用,实现非阻塞IO。
- 多线程模型:采用one loop per thread模型,主线程负责accept请求,其他IO线程处理连接。
- 线程池:使用线程池避免线程创建和销毁开销,线程分配采用轮询策略。
- 定时器:用timerfd实现定时器队列,管理定时任务。
- 异步日志:采用双缓冲技术实现异步日志,提升日志记录性能。
- HTTP解析:支持HTTP/1.1协议,解析GET和HEAD请求,支持长连接和管线化。
- 性能测试:使用Webbench工具进行性能测试,支持短连接和长连接的QPS测试。
安装使用步骤
1. 环境准备
- 操作系统:Ubuntu 18.04
- 编译器:g++ 4.8
- 硬件:i5-8400 CPU,8G内存
2. 编译项目
bash
mkdir build
cd build
cmake ..
make
3. 运行服务器
bash
./http_server
4. 测试服务器
使用Webbench工具进行性能测试:
bash
webbench -c 1000 -t 60 http://127.0.0.1:8000/
5. 查看日志
日志文件默认保存在项目根目录下的logs
文件夹中,可查看日志了解服务器运行状态和错误信息。
6. 关闭服务器
在服务器运行终端按Ctrl+C
关闭服务器。
注意事项
- 本项目为学习项目,用于理解网络编程和多线程编程原理,不建议用于生产环境。
- 实际使用时,可根据需求优化改进代码,如增加错误处理、日志分级等功能。
- 性能测试时,建议在相同环境多次测试取平均值。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】