这是一个轻量级的 Web 服务器,目前支持 GET、HEAD 方法处理静态资源。并发模型选择: 线程池+Reactor+非阻塞方式运行。
测试页面:
Part Ⅰ | Part Ⅱ |
---|---|
整体设计 | 性能测试分析 |
- 操作系统: Ubuntu 5.4.0-6 Ubuntu16.04.9
- 编译器: g++ version 5.4.0 20160609
- 版本控制: git
- 编辑器: Vim
- 压测工具:WebBench
cmake . && make
./webserver [-p port] [-t thread_numbers] [-r website_root_path] [-d daemon_run]
- 状态机解析 HTTP 请求,目前支持 HTTP GET、HEAD 方法
- 使用 priority 队列实现的最小堆结构管理定时器,使用标记删除
- 使用 epoll + 非阻塞IO + 边缘触发(ET) 实现高并发处理请求,使用 Reactor 编程模型
- epoll 使用 EPOLLONESHOT 保证一个 socket 连接在任意时刻都只被一个线程处理
- 使用多线程充分利用多核 CPU,并使用线程池避免线程频繁创建销毁的开销
- 为减少内存泄漏的可能,使用智能指针等 RAII 机制
- 添加异步日志系统,记录服务器运行状态
- 自动化构建: cmake
- 集成开发工具: CLion