您的位置:首页 > 其它

使用TThreadPoolServer遇到的问题

2013-05-06 14:57 323 查看
最近,使用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,有多少请求,建立多少(长)连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: