web server linux,GitHub - markparticle/WebServer: C++ Linux WebServer服务器
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服务器相关推荐
- android kvm linux,GitHub - QEMUINANDROID/QEMUARMLINUXANDROID: 移植linux上的qemu虚拟化软件到android...
QEMUARMLINUX&ANDROID QEMU简介: QEMU(简称快速仿真器)是一个免费的开源系统管理程序托管执行硬件虚拟化(不要与硬件辅助虚拟化相混淆). QEMU是一个托管的虚拟机监 ...
- 包含Tomcat 9的JBoss Web Server 5已发布
Red Hat JBoss Web Server(JWS)将Apache服务器与Tomcat相结合,用于构建.部署和维护Web应用程序和大型网站.JBoss Web Server 5最近发布,支持To ...
- linux搭建web服务器论文答辩开场白,基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩.ppt...
基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩 2009-5-31 计算机科学与技术专业 2009届本科生毕业论文答辩 基于ARM9的嵌入式Linux系统的We ...
- 基于Linux搭建一个类似Qik手机录像直播平台(服务器端:feng streaming server + web server,客户端:Android手机应用)
一.服务器端 基于Feng开源的流媒体服务器增加一个Web server,用来接收客户端上传的视频数据,然后通过RTSP/RTP直播到手机终端上去 二.客户端应用 1. 介绍 客户端应用主要是基于 A ...
- Linux源码安装pgadmin4,Linux 服务器部署 PgAdmin 4 Server
PostgreSQL 使用率越来越高,但是好用的图形化软件,诸如 Navicat.DataGrip.HeidiSQL 都是客户端软件,对于访问控制来说,比起 MySQL 的 phpMyAdmin 更加 ...
- 网络安全-常见面试题(Web、渗透测试、密码学、Linux等)
目录 WEB安全 OWASP Top 10(2017) Injection - 注入攻击 Broken Authentication-失效的身份认证 Sensitive Data Exposure-敏 ...
- linux 怎么配置apache,在Linux下配置Apache Web服务
<在Linux下配置Apache Web服务>由会员分享,可在线阅读,更多相关<在Linux下配置Apache Web服务(10页珍藏版)>请在人人文库网上搜索. 1.在Lin ...
- linux开源项目github,GitHub 上的优质 Linux 开源项目,真滴牛逼!
作为一名互联网人,提起 Linux 大家都不陌生,尤其是日常跟 Linux 操作系统打交道最多的,最熟悉不过了.互联网上关于 Linux 相关的教程和资料也非常的多,但是当你从中筛选出真正对自己有帮助 ...
- linux有哪些好用的ftp服务器?(vsftpd、ProFTPd、Pure-FTPd、FileZilla Server、CrushFTP)(WebDAV)
文章目录 linux下常见ftp服务器 vsftpd (Very Secure FTP Daemon) ProFTPd Pure-FTPd FileZilla Server CrushFTP 对上述一 ...
- Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统
Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...
最新文章
- 去某大厂三面总监面,因为迟到了5分钟,面试官当着我的面把简历扔垃圾桶了...
- 神经网络版员工离职预测
- spring注解式参数校验
- Android 动画效果及Interpolator和AnimationListener的使用
- C#如何打包EXE程序生成setup安装文件
- yum 安装nginx
- 玻森新闻自动摘要算法介绍
- Object.create()和深拷贝
- eXeScope之类的程序资源修改器的使用,很牛! 【只是针对VC++和DELPHI写的程序】
- 关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解
- ubuntu系统鼠标右键没有新建文档的解决方案
- amd 安卓虚拟机_一款完美解决AMD兼容问题的安卓模拟器
- 地区三级联动数据库(中国行政区划分数据库)【2018年1月】
- 阿里云平台购买域名 免费申请SSL证书
- 第八章:Java8新增特性,Lambda表达式
- 金融衍生品数据分析_大数据_numpy,matplotlib,pandas学习
- hⅰgh怎么读音发音英语_英语读音
- mac网络设置_如何在Mac上设置和使用网络位置
- 小程序跳转小程序,小程序跳转公众号,小程序跳转h5
- 关于Visual Studio 中“scanf”输入报错的解决方法
热门文章
- HID Global推出全新室内定位服务 助力企业优化配置劳动力
- error while loading shared libraries: libtinfo.so.5
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
- Spring 测试代码的写法以及一个c3p0的错误
- 期末总结(第五章—)
- 三维平面叠加图_无人机倾斜摄影技术在三维实景GIS的应用
- mybatis中的一级和二级缓存,执行顺序,cache属性的应用
- java统计空格代码_java统计文件中字符,数字,汉字,空格数目
- apollo @value没生效_有Apollo,还用Archaius吗?
- ASP.NET中防止刷新页面造成表单重复提交