Skip to content

rongweihe/WebServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A C++ Lightweight Web Server

license Build Status

简介

这是一个轻量级的 Web 服务器,目前支持 GET、HEAD 方法处理静态资源。并发模型选择: 线程池+Reactor+非阻塞方式运行。

测试页面:


Part Ⅰ Part Ⅱ
整体设计 性能测试分析

开发部署环境

  • 操作系统: Ubuntu 5.4.0-6 Ubuntu16.04.9
  • 编译器: g++ version 5.4.0 20160609
  • 版本控制: git
  • 编辑器: Vim
  • 压测工具:WebBench

Usage

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

参考

About

C++ High Performance HTTP WebServer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published