- 使用 线程池 + 非阻塞socket + epoll(边缘触发) + 事件处理(模拟Proactor) 的并发模型
- 使用状态机解析HTTP请求报文,支持解析GET和POST请求
- 引入数据库连接池,访问服务器数据库实现用户登录
- 利用升序定时器链表处理非活动连接
- 实现同步/异步日志系统,记录服务器运行状态
- 经Webbench压力测试可以实现上万的并发连接数据交换
服务器:阿里云轻量级应用服务器(1核2G)
创建http_serv
数据库,添加register_table
表;表字段为user
,pass
。
mysql> use http_serv;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_http_serv |
+---------------------+
| register_table |
+---------------------+
1 row in set (0.00 sec)
mysql> show columns from register_table;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| user | varchar(255) | YES | | NULL | |
| pass | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
make
./main
测试并发量10500全部请求成功 QPS:178932/60≈3000
源自<<Linux高性能服务器编程>>代码
- 半同步半反应堆线程池 + 模拟proactor模式
- 有限状态机
- epoll边缘触发
- mysql数据库
- 统一事件源
- 升序定时器链表
- 阻塞队列
- 生产者消费者模型
- Linux高性能服务器
- TCP/IP网络编程
- TinyWebServer