通过muduo的启发,再反思之前写过的TinyWebServer1.0,决定重构一版稳定性较高的TinyWebServer。
TinyWebServer是一款支持静态网页、CGI文件、PDF文件、音频和视频传输的Web服务器。
- 支持GET请求
- 支持POST请求
- 支持图片、语音、视频等大文件的传输
- 控制了内存泄漏,使用了RAII**对资源进行了管理。
- 处理速度快,采用了多线程异步I/O多路复用模式。
- 稳定性高,各类功能划分清晰。
- 文件发送快,利用读写缓冲区实现前后台分离模式异步发送。
- 配置简单。
- 使用简单。
配置文件为httped.conf,其中配置格式如下:
ServerRoot: /etc/TinyWeb/WWW
字段说明如下:
ServerRoot: //服务器的根目录
Listen://监听端口号
DocumentPath: //静态网页文件放置绝对目录
CGIPath: //CGI执行文件放置绝对目录
CGI: //是否开启CGI功能,默认值是不开启
ADDR://设置站点ip地址,默认为回环地址
ThreadNumber://大于0默认开启多线程服务,等于0启动单线程服务
默认配置例子:
ServerRoot: /etc/TinyHtp/WWW
Listen: 8888
DocumentPath: /etc/TinyHtp/WWW/Documents
CGIPath: /etc/TinyHtp/WWW/CGI
CGI: NO
ADDR: 127.0.0.1
ThreadNumber: 0
MacOS 10.12.6
请同配置文件下载在同一个目录下。
git https://github.com/jialuhu/webserver.git
运行前请安装cmake
mkdir build
cd build
cmake ..
make
./webserver
使用siege对webserver和Apache进行压力测试比较,测压命令统一如下:
siege -r 10000 -c 50 URL
//重复10000次,并发客户为50
若图片加载缓慢可参考如下数据:
Date/Time: 2020-02-23 14:37:16.128 +0800
Launch Time: 2020-02-21 16:14:35.852 +0800
OS Version: Mac OS X 10.12.6 (16G2136)
Report Version: 7
Analysis Tool: /Applications/Xcode.app/Contents/Developer/usr/bin/leaks
Analysis Tool Version: Xcode 9.2 (9C40b)
----
leaks Report Version: 2.0
Process 14347: 171 nodes malloced for 89 KB
Process 14347: 0 leaks for 0 total leaked bytes.
从检测结果得出如下结论:
- 进程14347:171个节点分配了89 KB的内存
- 进程14347:0泄漏,总共泄漏0个字节。
若网页背景图显示不完整请刷新该页面。 点击此处进行访问