ホーム>source

現在、ゲームサーバーを開発しています。サーバーを最初から開発することを避けるために、tomcat 7.0を使用して、ゲームロジックに集中できるようにしています。

要件に基づいて、クライアントとの通信にwebsocketを使用していますが、多くのクライアントがサーバーに接続しているときに新しい接続を確立できません。確立された接続の数が最大数に達したのではないかと思います。ちなみに、APRコネクタはtomcatが使用しています。

だから、私の質問は:

  1. tomcat 7.0でサポートされるアクティブなWebSocket接続の最大数はいくつですか。
  2. 設定方法。
  3. 現在、apacheとmod_jkはロードバランシングに使用できないため、websocketのロードバランシングに対する解決策はありますか?

どんな助けでも感謝します、事前に感謝します!

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

    Tomcatで最大のライブWebソケット接続に到達するには、次の構成変更を行う必要があります。

    ウィズウィズ

    <前>ウィズウィズ

    Tomcatがデプロイされているマシンで使用できるポートの数を確認します。

    <前>ウィズウィズ

    これを50から65535に変更します。

    <前>ウィズウィズ

    上記の構成変更により、サーバーとクライアントが異なるマシンで実行されている場合、2GBのIntel Core i5マシンで約5万のライブ接続が可能になります。

  • 解決した方法 # 2

    上限は、サーバーがサポートできるTCP接続の数です。

    デフォルトの強制制限は、使用しているコネクタ(提供しなかった情報)によって異なります。 NIOおよびAPOR/nativeの場合は、maxConnectionsを増やす必要があります。 bIOの場合、maxThreadsを増やします。

    これは、使用しているロードバランサーによって異なります。ここでも、提供できなかった情報を示します。

  • 解決した方法 # 3

    websocket接続の総数は、websocketサーバー(この場合はtomcatインスタンス)が実行されているOSによって許可されているオープンファイル記述子の数によって決まります.UNIXマシンでは、75000のファイル記述子のハード制限がありますが、新しいソケットを生成するtomcatの機能にはハード制限があります

  • 解決した方法 # 4

    最初の2つの質問の答えは、tomcatのconfフォルダー(〜/ conf/server.xml)のserver.xmlファイルにあると思います。Executorタグと、次のリンクのコネクタの使用可能な属性とパラメーターを参照してください。あなたを助けます(私はserver.xmlファイルのコメントから持ってきました):

    Tomcat Java HTTPコネクタ

    ドキュメントで、コネクタの属性を使用するか、エグゼキュータを使用してコネクタにリンクできると説明されているように、コネクタタグのエグゼキュータ属性の説明を参照してください。

    <前>ウィズウィズ

    また、Java AJPコネクタの接続数を上書きすることもできます。 次のドキュメント:

    Java AJPコネクタ

    あなたの最後の質問については、レプリケーションとロードバランシングツールを今のところ使用できない場合は、リソース内のリソースを解放して他のクライアントが利用できるように、できるだけ早くサーバー内で作業を終了することが答えだと思います。

    {CATALINA_HOME}/conf/server.xml

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ C ++を使用して文字列から整数変数に文字を変換する方法