高性能webserver

基于muduo实现了一个高性能webserver。

并且自定义循环缓冲区实现时间轮以定时踢掉不活跃的Tcp连接。

GitHub地址:GitHub - Zhangjf-code/MyTinyNetworkLibrary: 基于陈硕大神的muduo库进行重构,实现了大部分功能的基础上,新增加了解析web请求的功能,实现了一个高性能web服务器,并利用时间轮踢掉超时连接,实现了心跳检测的功能

欢迎star

时间轮的作用

时间轮的作用是为了定时踢掉超时的TCP连接,所谓超时的TCP连接指的双方长时间没有通信的连接。由于这些超时连接没有通信,依然占用服务器资源,所以需要清理掉。服务器和客户端长时间不通信的两种情况如下:一种是连接正常,只是单纯不需要通信,这个不多讲,另一种是客户端出现意外,下面讲这种情况: 由于muduo不会主动关闭连接,都是等待客户端关闭后再关闭服务端(即使主动关闭也是先关闭自己的写端,等客户端关闭后,在关闭自己的读端,之所以这样做是为了服务器不会漏收对方消息,这里不展开说明),如果客户端意外断电关机,那么服务端就无法受到FIN,进而无法关闭连接,此时,如果应用层没有实现心跳机制、也没有为该连接的fd设置 SO_KEEPALIVE,该连接就会一直占用服务器资源。 为了避免上述无效连接浪费服务器资源,要么设置 SO_KEEPALIVE,要么应用层实现心跳机制。如果是 实现心跳机制,就需要定时器实现的时间轮,用于以便定时清理无效连接 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值