使用TThreadPoolServer遇到的问题

最近,使用TThreadPoolServer遇到一个问题,就是线程池线程的数量少于发送端的数量引起的问题。

外部表现有2个:

  1)某些客户端无论如何都连接不上服务端。

  2)服务端打开socket越来越多,直至65536,最终无法接收数据,甚至程序崩溃。

  这算不算TThreadPoolServer bug?还是我用的不对?它应该拒绝多出来的请求,并关闭socket。

  错误信息:

Thrift: Mon May  6 17:15:21 2013 TThreadPoolServer: TServerTransport died on accept: accept(): Too many open files
Thrift: Mon May  6 17:15:21 2013 TServerSocket::acceptImpl() ::accept() Too many open files

  可用ll /proc/pid/fd查看该进程打开的句柄


解决方法:1)将线程池数量提高至足够大,不可避免还存在同样问题,不推荐;2)使用TThreadedServer,有多少请求,建立多少(长)连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值