GitHub 火線榜

GitHub 火線榜 · 倉庫檔案

linyacool/WebServer

A C++ High Performance Web Server (簡介來自倉庫自身文件。)

資料截至 October 25linyacool

最好成績

#370

總榜 · C++ 分面

8.2K

累計 Star

2.1K

Fork 總數

0

近 30 天在榜天數

專案狀態授權條款: MIT最近 push: September 27Open Issues(含 PR): 109

自 2026-10-25 起採集;未知 = 尚未採集到

把上榜徽章放進你的 README · linyacool/WebServer[![把上榜徽章放進你的 README](https://git.vaiox.xyz/api/badge/linyacool/WebServer.svg)](https://git.vaiox.xyz/zh-TW/repo/linyacool/WebServer)
<a href="https://git.vaiox.xyz/zh-TW/repo/linyacool/WebServer"><img src="https://git.vaiox.xyz/api/badge/linyacool/WebServer.svg" alt="把上榜徽章放進你的 README" height="20"></a>

專案文件

A C++ High Performance Web Server

Build Status license

Introduction

本项目为C++11编写的Web服务器,解析了get、head请求,可处理静态资源,支持HTTP长连接,支持管线化请求,并实现了异步日志,记录服务器运行状态。

Part Ⅰ Part Ⅱ Part Ⅲ Part Ⅳ Part Ⅴ Part Ⅵ
并发模型 连接的维护 版本历史 测试及改进 项目目的 面试问题

Envoirment

  • OS: Ubuntu 14.04
  • Complier: g++ 4.8

Build

./build.sh

Usage

./WebServer [-t thread_numbers] [-p port] [-l log_file_path(should begin with '/')]

Technical points

  • 使用Epoll边沿触发的IO多路复用技术,非阻塞IO,使用Reactor模式
  • 使用多线程充分利用多核CPU,并使用线程池避免线程频繁创建销毁的开销
  • 使用基于小根堆的定时器关闭超时请求
  • 主线程只负责accept请求,并以Round Robin的方式分发给其它IO线程(兼计算线程),锁的争用只会出现在主线程和某一特定线程中
  • 使用eventfd实现了线程的异步唤醒
  • 使用双缓冲区技术实现了简单的异步日志系统
  • 为减少内存泄漏的可能,使用智能指针等RAII机制
  • 使用状态机解析了HTTP请求,支持管线化
  • 支持优雅关闭连接  

Model

并发模型为Reactor+非阻塞IO+线程池,新连接Round Robin分配,详细介绍请参考并发模型 并发模型

代码统计

cloc

Others

除了项目基本的代码,进服务器进行压测时,对开源测试工具Webbench增加了Keep-Alive选项和测试功能: 改写后的Webbench

當前上榜

  • 370

    總榜 · 史上最強 · C++

    8.2K 星 · 2.1K fork · 累計星星

    總榜 · C++ →

近 30 天勢頭

近 30 天沒有上榜紀錄。

同類專案 · 共享主題

← 回到榜單