项目简介
本项目是一个基于C++的轻量级Web服务器,具备高效的并发处理能力与丰富功能。其采用线程池、非阻塞socket、epoll(支持ET和LT模式)以及事件处理(Reactor和模拟Proactor)的并发模型,可处理高并发的HTTP请求。
项目的主要特性和功能
- 并发模型:采用线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现)的并发模型。
- HTTP请求解析:运用状态机解析HTTP请求报文,支持解析GET和POST请求。
- 数据库访问:可访问服务器数据库,实现web端用户注册、登录功能,还能请求播放服务器图片和视频文件。
- 日志系统:实现同步/异步日志系统,用于记录服务器运行状态。
- 压力测试:经Webbench压力测试,可实现上万的并发连接数据交换。
安装使用步骤
环境准备
- 服务器测试环境:Ubuntu版本16.04,MySQL版本5.7.29。
- 浏览器测试环境:Windows、Linux均可,Chrome、FireFox等浏览器。
数据库配置
- 创建数据库和用户表:
sql create database yourdb; 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
中的数据库初始化信息:cpp string user = "root"; string passwd = "root"; string databasename = "yourdb";
编译与运行
- 编译项目:
bash sh ./build.sh
- 启动服务器:
bash ./server
- 浏览器访问:
127.0.0.1:9006
个性化配置
服务器支持通过命令行参数进行个性化配置,例如:
bash
./server [-p port] [-l LOGWrite] [-m TRIGMode] [-o OPT_LINGER] [-s sql_num] [-t thread_num] [-c close_log] [-a actor_model]
- -p
:自定义端口号,默认9006。
- -l
:选择日志写入方式,默认同步写入。
- -m
:listenfd和connfd的模式组合,默认使用LT + LT。
- -o
:优雅关闭连接,默认不使用。
- -s
:数据库连接数量,默认为8。
- -t
:线程数量,默认为8。
- -c
:关闭日志,默认打开。
- -a
:选择反应堆模型,默认Proactor。
示例命令:
bash
./server -p 9007 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1
压力测试
使用Webbench进行压力测试,可实现上万的并发连接数据交换。测试前建议关闭日志以防止日志信息过大。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】