基于C++开发的简单Web服务器:sunny:
- 2021.11.30 发布第一个版本,来自于qinguoyi/TinyWebServer。
- 2021.12.09 添加WebBench压力测试。
- 暂无。
- 服务器测试环境
- Ubuntu版本18.04
- MySQL版本5.7.36
- 浏览器测试环境
- Windows、Linux均可
- Chrome、FireFox
- 其他浏览器暂无测试
- 测试前确认已安装MySQL数据库并启动MySQL服务
// 建立yourdb库 create database yourdb; // 创建user表 USE yourdb; CREATE TABLE user( username char(50) NULL, passwd char(50) NULL )ENGINE=InnoDB; // 添加数据 INSERT INTO user(username, passwd) VALUES('name', 'passwd');
- 修改config.h中的数据库初始化信息
// 数据库用户名、密码、库名 string user = "username"; string password = "password"; string database_name = "yourdb";
- build
make server
- 启动server
./bin/server
- 浏览器端
http://ip:port
./bin/server [-p port] [-l LOGWrite] [-m TRIGMode] [-o OPT_LINGER] [-s sql_num] [-t thread_num] [-c close_log] [-a actor_model]
- -p,自定义端口号
- 默认8081
- -l,选择日志写入方式,默认同步写入
- 0,同步写入
- 1,异步写入
- -m,listenfd和connfd的模式组合,默认使用LT + LT
- 0,表示使用LT + LT
- 1,表示使用LT + ET
- 2,表示使用ET + LT
- 3,表示使用ET + ET
- -o,优雅关闭连接,默认不使用
- 0,不使用
- 1,使用
- -s,数据库连接数量
- 默认为8
- -t,线程数量
- 默认为8
- -c,关闭日志,默认打开
- 0,打开日志
- 1,关闭日志
- -a,选择反应堆模型,默认Proactor
- 0,Proactor模型
- 1,Reactor模型
示例
./bin/server -p 8081 -l 1 -m 0 -o 1 -s 10 -t 10 -c 1 -a 1
webbench -c 10000 -t 5 http://127.0.0.1:port/
- -c,客户端数
- -t,运行时间
Note:关闭日志后再测试。
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Request:
GET / HTTP/1.0
User-Agent: WebBench 1.5
Host: 127.0.0.1
Runing info: 10000 clients, running 5 sec.
Speed=3345264 pages/min, 6244448 bytes/sec.
Requests: 278772 susceed, 0 failed.
- Proactor,LT + LT,55754 QPS
- 小白视角:一文读懂社长的TinyWebServer
- 最新版Web服务器项目详解 - 01 线程同步机制封装类
- 最新版Web服务器项目详解 - 02 半同步半反应堆线程池(上)
- 最新版Web服务器项目详解 - 03 半同步半反应堆线程池(下)
- 最新版Web服务器项目详解 - 04 http连接处理(上)
- 最新版Web服务器项目详解 - 05 http连接处理(中)
- 最新版Web服务器项目详解 - 06 http连接处理(下)
- 最新版Web服务器项目详解 - 07 定时器处理非活动连接(上)
- 最新版Web服务器项目详解 - 08 定时器处理非活动连接(下)
- 最新版Web服务器项目详解 - 09 日志系统(上)
- 最新版Web服务器项目详解 - 10 日志系统(下)
- 最新版Web服务器项目详解 - 11 数据库连接池
- 最新版Web服务器项目详解 - 12 注册登录
- 最新版Web服务器项目详解 - 13 踩坑与面试题