私はThriftでシンプルなサーバーを作成しようとしています。当初は有望そうでしたが、同時に接続された多数のクライアントに問題がありました。 TThreadPoolServerを使用しています.TThreadPoolServerを使用すると、4つのクライアントを接続してから、他のクライアントをブロックして、接続されているクライアントから1つを削除します。スレッドの数を増やすことなく、より多くの(おそらく数百の)クライアントを同時に接続できるようにするにはどうすればよいですか。私はワーカースレッドが一度に1つのクライアント要求を実行できることを前提としていましたが、閉じられるまで1つのスレッドが1つの接続を処理するように見えます。私はクライアントがアクションを実行するためにソケットを再オープンしなければならない状況を避けたいと思います。スリフトでの多数の同時接続数
5
A
答えて
3
C++を使用してサーバーを構築している場合は、アクティブなスレッドの数などにかかわらず、一度に多くの接続を受け入れることができるTThreadPoolServerの代わりにTNonblockingServerを使用できます。
実際に作業を高速化する(ハンドラはスレッドプールで実行される)ことは必ずしもできませんが、より多くのクライアントがすぐに接続できるようになります。
はここでコードがNBサーバのようになります。
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
shared_ptr<MyHandler> handler(new MyHandler());
shared_ptr<TProcessor> processor(new MyProcessor(handler));
TNonblockingServer server(processor, protocolFactory, port);
2
プール内の4つのスレッドのあなたの限界はSimpleThreadManagerのデフォルトコンストラクタに組み込まれてい
:このThreadManagerオブジェクトは、ThreadPoolServerのcoonstructorに渡されるので、このオブジェクトのコンストラクタに大きな数を渡している
class SimpleThreadManager : public ThreadManager::Impl {
public:
SimpleThreadManager(size_t workerCount=4, size_t pendingTaskCountMax=0) :
workerCount_(workerCount),
pendingTaskCountMax_(pendingTaskCountMax),
firstTime_(true) {
}
...
};
スレッドプールのサイズを増やします。
関連する問題
- 1. IE7モードでIE9の同時接続数
- 2. ブラウザでの最大同時接続数
- 3. MySQLへの最大同時接続数
- 4. Chromium同時HTTP接続の最大数
- 5. 複数の同時AJAX接続が多すぎるのですか?
- 6. 同じブラウザとIIS同時接続の複数のタブ
- 7. nodejs - なぜNode.jsが多数の同時永続接続を処理できるのですか?
- 8. 同時接続
- 9. 同時接続数100,000のWebSocketサーバーは何ですか?
- 10. IIS内の接続数が多い
- 11. 同時のJMS接続の上限数を設定するWeblogic
- 12. 接続プールのmysqlユーザー定義変数の同時実行性?
- 13. 同時SQLサーバー接続の数を確認する方法
- 14. Windows Server:IISとSQL Serverの同時接続数
- 15. StropheとOpenfireを使用した複数の同時XMPP接続
- 16. IPアドレスへの同時接続数を増やす
- 17. Webサーバーでサポートされている同時接続数
- 18. 同じページの複数のsocket.io接続
- 19. スリフト数式文字列
- 20. Goサーバでの同時(同時)HTTP接続の理論的最大数はいくらですか?
- 21. Bonjourでの同時接続数の制限はありますか?
- 22. openBravoで複数のデータベースに同時に接続できますか?
- 23. ブラウザが同時に行う接続の最大数はいくらですか?
- 24. netty 5.0で多数の接続を作成する方法
- 25. Nginx:バックエンドへのIPあたりの同時接続数の制限
- 26. Tornado WebSocketサーバーへの同時接続
- 27. 接続あたりのPostgres同時トランザクション
- 28. ユニットテストでの多重接続
- 29. iphoneチャットアプリで同時に多数のユーザーをシミュレートする
しかし、彼は、スレッドの数を増やしたくありません。 –
おっと、私はそれを完全に逃しました:( – JackOfAllTrades
あなたはpendingTaskCountMaxを増やしています、それはあなたが望むものではありませんか? – rmn