私は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. ブラウザでの最大同時接続数
- 2. IE7モードでIE9の同時接続数
- 3. socket.ioとの同時接続が多い
- 4. Npgsqlとasyncとの同時接続数
- 5. MySQLへの最大同時接続数
- 6. Chromium同時HTTP接続の最大数
- 7. 複数の同時AJAX接続が多すぎるのですか?
- 8. ASP.NETコア最大同時接続数?
- 9. .Net Core同時接続数を取得
- 10. 同じブラウザとIIS同時接続の複数のタブ
- 11. nodejs - なぜNode.jsが多数の同時永続接続を処理できるのですか?
- 12. 同時接続
- 13. Oracle 10gでの同時接続最大数
- 14. Firebaseデータベースノードでの同時接続数を確認
- 15. 同時接続数100,000のWebSocketサーバーは何ですか?
- 16. IIS内の接続数が多い
- 17. kdbへの接続数が多い
- 18. 1台のサーバーからの同時接続数の制限
- 19. JavaのCassandraへの複数同時接続
- 20. 接続プールのmysqlユーザー定義変数の同時実行性?
- 21. 同時のJMS接続の上限数を設定するWeblogic
- 22. スプレッドシートの同時接続?
- 23. 同時BLE接続
- 24. 複数のクエリを持つ1つのクライアントのFirebase同時接続数
- 25. 同時SQLサーバー接続の数を確認する方法
- 26. IPアドレスへの同時接続数を増やす
- 27. Qt - 複数のデータベース接続を同時に処理する
- 28. StropheとOpenfireを使用した複数の同時XMPP接続
- 29. Windows Server:IISとSQL Serverの同時接続数
- 30. 同時に複数の接続を扱うマルチスレッドカール
しかし、彼は、スレッドの数を増やしたくありません。 –
おっと、私はそれを完全に逃しました:( – JackOfAllTrades
あなたはpendingTaskCountMaxを増やしています、それはあなたが望むものではありませんか? – rmn