这是使用C++实现的轻量级服务器,经压力测试可实现上万并发访问。
- 统一信号源并使用了非阻塞Socket+Epoll模式的IO复用
- 并发和事件处理模型采用半同步/半反应堆模式,同时也支持主线程完成数据读写
- 实现了基于链表的定时器,以删除非活动连接
- 使用状态机解析HTTP请求报文,可访问数据库实现Web用户注册登录和请求服务器文件等功能
- 实现了日志系统,可以记录服务器运行信息
- Ubuntu 16.04.1 server
- gcc 5.4.0 x86_64-linux-gnu
- MySQL 5.7.33
- Chrome
1.请确认已经安装好数据库,修改下列地址、用户和密码并运行命令。
mysql -h localhost -u root -pMyHqSql.543 < ./script/mysql_init.sql
2.修改main.cpp中的数据库配置信息。
// 登录名
string user = "root";
// 密码
string passwd = "MyHqSql.543";
// 库名
string databasename = "webserver";
make clean && make server
./server
默认端口9006,请打开浏览器访问。
使用Web Bench进行测试。
cd Test/webbench-1.5/
make clean && make
# -c 指定客户端数量 -t 指定测试时间
./webbench -c 10 -t 2 http://127.0.0.1:9006/
经Webbench压力测试,该服务器可以实现上万的并发连接,所有访问均成功。
- 《Linux 高性能服务器编程》by游双和《UNIX网络编程》
- TinyWebServer项目,Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器。