最近我們用Apache Thrift替換了我們的內部消息庫。在我們的設置中,我們有幾個c#服務和幾個連接到它們的C++「客戶端」。在開始我們使用TThreadPoolServer作爲服務器實現。Thrift Nonblocking Server c#
_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,因爲它是在舊貨C++庫已經實施。我想知道是否有人已經爲c#寫了一個。
雖然此鏈接可以回答這個問題,最好是在這裏有答案的主要部件,並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18143174) – Xenolightning 2017-12-04 03:49:43
好的,我編輯過 – 2017-12-04 04:31:19