1、连接池中连接回收的深度思考
连接回收存在隐患。如果客户端断线,服务器端立即回收连接。很有可能被紧随其后新客户端进入连接使用。很可能产生麻烦。
张三断线,epoll_wait可以立即感知到,立刻回收连接,这个时候李四连接进来,刚好使用了张三刚刚释放的连接。10秒钟到了,张三线程执行完返回,继续操作该连接,修改或者读写,很可能导致服务器崩溃。
一个连接如果不用了,不应该立即放到空闲队列里,而是应该等待一个时间。再真正的回收连接到空闲队列中。等待前一个连接的业务已经执行完成。
2、延迟回收
用户断线的时候,先要延迟回收。与之对应的是立即回收
3、程序退出时的线程安全终止
多线程技术全面开花。还没有找到安全终止调用的合适地方。
4、epoll事件处理的改造
4.1、增加新的事件处理函数
4.2、调整对事件处理函数的调用
5、连接延迟回收的具体应用
网友评论