Thrift第六课 连接中断无法正常清理工作线程

简介:

1)继承TServerEventHandler类,获取连接用户的基本信息包括IP和端口,从而监控是否保存有没有清除的连接

TServerEventHandler类提供了用户连接和断开的时候,针对套接字的处理方式,其中提供了两个函数

createContext 当一个新的用户连接的时候会被调用

deleteContext 当用户结束请求处理的时候会被调用

 

详细的流程可以查看TThreadPoolServer::Task,Task作为TThreadPoolServer的内部类,在Task::run函数内部,当有连接进来的时候,会获取TServerEventHandler类的对象,判断是否有实例化,对连接进行处理,详细的代码   

boost::shared_ptr<TServerEventHandler>eventHandler =

 server_.getEventHandler();

   

void* connectionContext = NULL;

if (eventHandler != NULL) 

{     

connectionContext =eventHandler->createContext(input_, output_);

}

 

参考

http://blog.csdn.net/hbuxiaoshe/article/details/38942869


2)在实际的应用中,创建一定数量的工作线程为用户连接服务,发现用户异常中断之后,工作线程无法正常析构,导致耗尽线程池的工作线程


问题

1)  客户端没有调用close接口,关闭连接,服务器端只有唯一的一次closesocket代码,输出的字符串是\x1,目前暂时不知道在什么地方关闭套接字

2)  线程在空闲的时候是如何进行等待事件请求的

3)  pendingTaskCountMax_ 参数的具体含义是什么

4)isOpen函数其实只是确保了连接是否成功,如果连接成功之后,如果服务器断开或者客户端断开连接,这个时候判断isOpen函数的返回值是没有任何的效果的,这个时候只能够通过thrift自身的断开连接的检测机制,目前尚不了解会在什么时机释放连接




     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/2071781,如需转载请自行联系原作者




相关文章
|
4月前
|
Java 关系型数据库 MySQL
如何用java的虚拟线程连接数据库
本文介绍了如何使用Java虚拟线程连接数据库,包括设置JDK版本、创建虚拟线程的方法和使用虚拟线程连接MySQL数据库的示例代码。
105 6
如何用java的虚拟线程连接数据库
|
6月前
|
NoSQL 安全 Java
Lettuce的特性和内部实现问题之Lettuce连接与Jedis连接在线程安全性的问题如何解决
Lettuce的特性和内部实现问题之Lettuce连接与Jedis连接在线程安全性的问题如何解决
|
7月前
|
Java Spring
spring boot 中默认最大线程连接数,线程池数配置查看
spring boot 中默认最大线程连接数,线程池数配置查看
440 4
|
7月前
|
Java Redis 数据安全/隐私保护
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
|
9月前
|
Java
蓝易云 - HTTP的并发连接限制和连接线程池
这两个概念在网络编程中是相互关联的。如果并发连接数过多,而线程池的大小又不足以处理这些连接,服务器可能会变得不稳定,甚至崩溃。因此,合理地设置并发连接限制和线程池大小对于保持服务器的稳定性和高效性至关重要。
86 0
|
消息中间件 网络协议 安全
【Kafka从入门到成神系列 八】Kafka 多线程消费者及TCP连接
【Kafka从入门到成神系列 八】Kafka 多线程消费者及TCP连接
【Kafka从入门到成神系列 八】Kafka 多线程消费者及TCP连接
|
负载均衡 网络协议 安全
【服务网格架构】Envoy 架构概览(1):术语,线程模型,监听器和网络(L3 / L4)过滤器和HTTP连接管理
【服务网格架构】Envoy 架构概览(1):术语,线程模型,监听器和网络(L3 / L4)过滤器和HTTP连接管理
|
负载均衡 网络协议 安全
Envoy 架构概览(1):术语,线程模型,监听器和网络(L3 / L4)过滤器和HTTP连接管理
Envoy 架构概览(1):术语,线程模型,监听器和网络(L3 / L4)过滤器和HTTP连接管理
|
安全 Java
手把手实例对比String、StringBuilder字符串的连接效率及StringBuilder和StringBuffer线程安全的比较...
手把手实例对比String、StringBuilder字符串的连接效率及StringBuilder和StringBuffer线程安全的比较...
205 0
|
物联网 Linux 开发者
线程 pthread_exit 时执行清理程序|学习笔记
快速学习线程 pthread_exit 时执行清理程序

相关实验场景

更多