ホーム>source

私はこれが初心者ですが、私の質問が経験豊富なnetty、tomcatユーザーにとっては単純すぎるように見える場合は申し訳ありません。

tomcat(ポート8080で実行)内のスプリングを介して構成されたNetty Webソケットサーバー(サンプルコードを使用し、ポート8090で実行)を実行しています。私は両方のスレッドモデルと全体的にどのように機能するかを理解しようとしています。

私が理解しているように、Tomcat by deafultは maxThreads = 200 を設定します(アクティブなスレッドの最大数)。 nettyはボススレッドを使用してソケットを作成および接続/バインドし、それらを実際の非同期I/Oを行うワーカースレッドに渡します。

今私は理解しようとしています:

  • Nettyが使用するスレッドがTomcatプールから取得され、アクティブなスレッドの数が減少する場合)

  • WebSocket接続ごとに、個別のスレッドが割り当てられて使用されます(WebSocket実装についてははっきりしていませんが、これに対する答えは「いいえ」であるはずです)。

  • 全体として、それはwebappとwebsocketサーバーに同時に接続するクライアントの数にどのように影響しますか?

編集:

そしてそれに応じて、weboscketサーバーをコーディングする際に留意すべき特定のポイントはありますか?

あなたの答え
  • 解決した方法 # 1

    Nettyでは、Executorをコンストラクターに渡してThreadPoolを指定します。したがって、Tomcatで使用するのと同じプールを使用しない限り、使用可能なスレッドに影響を与えることはありません。

    NettyのWebseocket実装は、NIOトランスポートで使用できます。この場合、接続間でいくつかのスレッドを共有します。したがって、接続からスレッドへの1対1のマッピングはありません。

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ c# - Azureを使用せずにコンソールアプリケーションのVisual Studio 2015の[診断ツール]ウィンドウでSQLイベント(Application Insights)を表示するにはどうすればよいですか?