- 这是一个由C++语言编写的基于事件驱动模型的Web服务器,实现了基本的GET、POST请求和动态网页的处理。
- 基于Reactor + 多线程 + 非阻塞I/O模型设计。
- 线程模型采用one loop per thread的思想,即每一个线程维护了一个事件循环,负责IO的处理,一定程度上减轻了主线程的压力。
- 维护状态机解析HTTP协议。
- 使用FastCGI实现对动态网页的请求。
- 使用mmap读取本地文件,减少了不必要的数据拷贝操作,提高了IO效率。
- 使用readv读取输入缓冲区中的数据,减少了当网络中传输大量数据时触发回调的次数。
- 使用智能指针管理对象的生命周期。避免内存泄露和空闲指针情况的发生。
- WebBench的使用
webbench -c 客户端数 -t 时间 http://127.0.0.1:8888/home/insect/
-
使用WebBench的测试结果:
-
绘制成图表如下
运行前请安装cmake 1.5以上版本
debian: sudo apt-get install cmake
redHat: sudo yum install cmake
Arch : sudo pacman -S cmake
cmake .
make
./a.out