WebServer

用C++实现的高性能WEB服务器,经过webbenchh压力测试可以实现上万的QPS

功能

利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型;

利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求;

利用标准库容器封装char,实现自动增长的缓冲区;

基于小根堆实现的定时器,关闭超时的非活动连接;

利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态;

利用RAII机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登录功能。

增加logsys,threadpool测试单元(todo: timer, sqlconnpool, httprequest, httpresponse)

环境要求

Linux

C++14

MySql

目录树

.

├── code 源代码

│ ├── buffer

│   ├── config

│   ├── http

│   ├── log

│   ├── timer

│   ├── pool

│   ├── server

│   └── main.cpp

├── test 单元测试

│ ├── Makefile

│   └── test.cpp

├── resources 静态资源

│   ├── index.html

│   ├── image

│   ├── video

│   ├── js

│ └── css

├── bin 可执行文件

│ └── server

├── log 日志文件

├── webbench-1.5 压力测试

├── build

│ └── Makefile

├── Makefile

├── LICENSE

└── readme.md

项目启动

需要先配置好对应的数据库

// 建立yourdb库

create database yourdb;

// 创建user表

USE yourdb;

CREATE TABLE user(

username char(50) NULL,

password char(50) NULL

)ENGINE=InnoDB;

// 添加数据

INSERT INTO user(username, password) VALUES('name', 'password');

make

./bin/server

单元测试

cd test

make

./test

压力测试

./webbench-1.5/webbench -c 100 -t 10 http://ip:port/

./webbench-1.5/webbench -c 1000 -t 10 http://ip:port/

./webbench-1.5/webbench -c 5000 -t 10 http://ip:port/

./webbench-1.5/webbench -c 10000 -t 10 http://ip:port/

测试环境: Ubuntu:19.10 cpu:i5-8400 内存:8G

QPS 10000+

TODO

config配置

完善单元测试

实现循环缓冲区

致谢

Linux高性能服务器编程,游双著.

web server linux,GitHub - markparticle/WebServer: C++ Linux WebServer服务器相关推荐

  1. android kvm linux,GitHub - QEMUINANDROID/QEMUARMLINUXANDROID: 移植linux上的qemu虚拟化软件到android...

    QEMUARMLINUX&ANDROID QEMU简介: QEMU(简称快速仿真器)是一个免费的开源系统管理程序托管执行硬件虚拟化(不要与硬件辅助虚拟化相混淆). QEMU是一个托管的虚拟机监 ...

  2. 包含Tomcat 9的JBoss Web Server 5已发布

    Red Hat JBoss Web Server(JWS)将Apache服务器与Tomcat相结合,用于构建.部署和维护Web应用程序和大型网站.JBoss Web Server 5最近发布,支持To ...

  3. linux搭建web服务器论文答辩开场白,基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩.ppt...

    基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩 2009-5-31 计算机科学与技术专业 2009届本科生毕业论文答辩 基于ARM9的嵌入式Linux系统的We ...

  4. 基于Linux搭建一个类似Qik手机录像直播平台(服务器端:feng streaming server + web server,客户端:Android手机应用)

    一.服务器端 基于Feng开源的流媒体服务器增加一个Web server,用来接收客户端上传的视频数据,然后通过RTSP/RTP直播到手机终端上去 二.客户端应用 1. 介绍 客户端应用主要是基于 A ...

  5. Linux源码安装pgadmin4,Linux 服务器部署 PgAdmin 4 Server

    PostgreSQL 使用率越来越高,但是好用的图形化软件,诸如 Navicat.DataGrip.HeidiSQL 都是客户端软件,对于访问控制来说,比起 MySQL 的 phpMyAdmin 更加 ...

  6. 网络安全-常见面试题(Web、渗透测试、密码学、Linux等)

    目录 WEB安全 OWASP Top 10(2017) Injection - 注入攻击 Broken Authentication-失效的身份认证 Sensitive Data Exposure-敏 ...

  7. linux 怎么配置apache,在Linux下配置Apache Web服务

    <在Linux下配置Apache Web服务>由会员分享,可在线阅读,更多相关<在Linux下配置Apache Web服务(10页珍藏版)>请在人人文库网上搜索. 1.在Lin ...

  8. linux开源项目github,GitHub 上的优质 Linux 开源项目,真滴牛逼!

    作为一名互联网人,提起 Linux 大家都不陌生,尤其是日常跟 Linux 操作系统打交道最多的,最熟悉不过了.互联网上关于 Linux 相关的教程和资料也非常的多,但是当你从中筛选出真正对自己有帮助 ...

  9. linux有哪些好用的ftp服务器?(vsftpd、ProFTPd、Pure-FTPd、FileZilla Server、CrushFTP)(WebDAV)

    文章目录 linux下常见ftp服务器 vsftpd (Very Secure FTP Daemon) ProFTPd Pure-FTPd FileZilla Server CrushFTP 对上述一 ...

  10. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

最新文章

  1. 去某大厂三面总监面,因为迟到了5分钟,面试官当着我的面把简历扔垃圾桶了...
  2. 神经网络版员工离职预测
  3. spring注解式参数校验
  4. Android 动画效果及Interpolator和AnimationListener的使用
  5. C#如何打包EXE程序生成setup安装文件
  6. yum 安装nginx
  7. 玻森新闻自动摘要算法介绍
  8. Object.create()和深拷贝
  9. eXeScope之类的程序资源修改器的使用,很牛! 【只是针对VC++和DELPHI写的程序】
  10. 关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解
  11. ubuntu系统鼠标右键没有新建文档的解决方案
  12. amd 安卓虚拟机_一款完美解决AMD兼容问题的安卓模拟器
  13. 地区三级联动数据库(中国行政区划分数据库)【2018年1月】
  14. 阿里云平台购买域名 免费申请SSL证书
  15. 第八章:Java8新增特性,Lambda表达式
  16. 金融衍生品数据分析_大数据_numpy,matplotlib,pandas学习
  17. hⅰgh怎么读音发音英语_英语读音
  18. mac网络设置_如何在Mac上设置和使用网络位置
  19. 小程序跳转小程序,小程序跳转公众号,小程序跳转h5
  20. 关于Visual Studio 中“scanf”输入报错的解决方法

热门文章

  1. HID Global推出全新室内定位服务 助力企业优化配置劳动力
  2. error while loading shared libraries: libtinfo.so.5
  3. 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
  4. Spring 测试代码的写法以及一个c3p0的错误
  5. 期末总结(第五章—)
  6. 三维平面叠加图_无人机倾斜摄影技术在三维实景GIS的应用
  7. mybatis中的一级和二级缓存,执行顺序,cache属性的应用
  8. java统计空格代码_java统计文件中字符,数字,汉字,空格数目
  9. apollo @value没生效_有Apollo,还用Archaius吗?
  10. ASP.NET中防止刷新页面造成表单重复提交