【发布时间】:2015-04-25 09:20:03
【问题描述】:
最近我们用 Apache Thrift 替换了我们的内部消息传递库。在我们的设置中,我们有几个 c# 服务和几个连接到它们的 c++“客户端”。一开始我们使用 TThreadPoolServer 来实现服务器。
_server = new TThreadPoolServer(processor, serverTransport);
因为它运行良好,我们还更换了最后一台服务器。此服务器需要与 400 多个客户端进行通信。我们看到的问题是,一旦客户端 100 连接了我们的服务器,服务器就停止接受新连接,它甚至没有调用 c# 计时器。在第一个客户端断开连接之前,它似乎有点窒息。
通过阅读此 SO Large number of simulteneous connections in thrift,我们决定更改为 TThreadedServer 并将最大线程数增加到 500,我们有一个可行的解决方案。
_server = new TThreadedServer(processor
, serverTransport
, new TTransportFactory()
, new TTransportFactory()
, new TBinaryProtocol.Factory()
, new TBinaryProtocol.Factory()
, 500
, DebugLogThriftServer);
我仍然希望拥有 TNonblockingServer,因为它是在 Thrift c++ 库中实现的。我想知道是否有人已经为 c# 编写了一个。
【问题讨论】:
标签: c# multithreading tcp thrift