単一のサーバーの同時インスタンスの最大数をサポートすることができます

むかしむかし、我々はまた、単一のサーバーサポートの同時接続をWANネットワークプログラミングC10K問題で解決策を求めているが、現在のハードウェアとオペレーティングシステムのサポートの観点からしていることはほとんどない挑戦となっています。のは、単一のサーバが、実際には、アプリケーションの大半を最大1万の同時接続をサポートできると仮定しよう、十分以上が、インターネット企業の同時接続の加入者ベースの多数といくつかの国のためには、多くの場合、万人に直面しています、テンセントの何百万、何百万、あるいは数百(注:QQデフォルトのUDPプロトコルが使用されます)。クラスタは、複数のサーバー間でバランスをとる私達の同時負荷のための技術を配布し、その後、私たちは、コンピュータの問題の数十を解決することができる拡張する必要があるが、我々は、単一のサーバーの多くの資源を活用したいと考えていますが、水平に拡張するので、あなたが効果的にサーバー関連費用を節約することができ、垂直拡大するための最初の取り組みは、その後、(ハードウェアリソース、部屋、運用、保守、電気が実際には、小さな出費ではありません)。だから、最終的に1台のサーバがそれを接続し、同時TCPの数をサポートすることができますか?

常識:ファイルハンドルの制限
linuxの下にあるすべてのTCP接続を知らなければならないネットワーク・サーバの友人を書くには、ファイルディスクリプタがなくなったら、戻って私たちのミスへの新しい接続の到着は、「ソケットは、ファイルディスクリプタを計上しなければなりません/ファイル:そう多く開けません 」ファイルを。

次に、あなたが開くことができるファイルの最大数のオペレーティング・システムの制限を理解する必要があります。

プロセス制限

このデフォルトは、同時TCP接続の数千人までで構成されます取ることができるようにプロセスは、1024個のファイルの最大のみを開くことができることを示し、出力1024のulimit -nを実行します。

一時的な変更は:ulimitが1000000を-nが、これは、システムが再起動またはユーザー出口れた後、それが失敗し、現在の環境効果的に現在ログオンしているユーザーの一時的な変更です。

障害発生後に再起動を修正します(CentOSの6.5しかし、私はテストされ、再起動後に無効た):編集/etc/security/limits.confファイル、内容を変更します

*ソフトNOFILE 1000000

*ハードNOFILE 1000000

恒久的な変更:編集の/etc/rc.local、以下を追加した後

ulimitの-shn 1000000

グローバル制限

実行猫の/ proc / sysのの/ fsを/それぞれのファイルNR出力93440592026、:1は、ファイルハンドル、2の番号が割り当てられているが、ファイルハンドル番号が割り当てられている使用していない、ファイルの最大数は3を扱います... しかし、カーネル内で第二項の合計値の2.6バージョンでは、それは実際に誰がファイルディスクリプタの廃棄物が使用されている割り当てられていないことを意味し、これは間違いではない、ゼロです。

私たちは、大きなこの値を変更するルートとして/etc/sysctl.confファイルを変更することができます。

fs.file-MAX = 1000000

net.ipv4.ip_conntrack_max = 1000000

net.ipv4.netfilter.ip_conntrack_max = 1000000

知識II:ポート番号の範囲の上限?
次のオペレーティングシステム1024は、システム用に予約上側ポートである、1024〜65535からのユーザによって使用されます。各TCP接続には、ポート番号を考慮しなければならないので、我々は、最大60,000以上の同時接続を持つことができますので。私は右、数人の友人にこの間違った考えを持っていると思いますか?(どの私はいつもそう思うために使用されます)

のは、それを分析してみましょう

TCPコネクションを識別する方法:{ローカルIP、ローカルポート、リモートIP、リモートポート}:四つ組との4システムが一意にTCPコネクションを識別する。まあ、我々は思い付く「UNIXネットワークプログラミング:ボリューム私は、」第4章では、2番目のパラメータcliaddrは、クライアントのIPアドレスとポート番号を表し、概念的な何かを見て受け入れるように説明しています。そして、我々は実際にのみ、このポートを使用する場合、ポート番号65535は、量の制限によって複雑にされていないことを示すサーバとしてバインド、。

接続のTCPサーバの最大数:サーバは、一般的にローカルポートモニタ上に固定され、クライアントは接続要求を待ちます。リユース(UNIX SO_REUSEADDRオプション)、サーバ側IPが複数、ローカルリスニングポートは排他的であっても、そうTCPサーバー側のコネクタ4タプルのみリモートIP(すなわち、クライアントIP)およびリモートポートに取り組むに関係なく、 (クライアントポート)、クライアント×クライアントIPの接続のTCPポート番号の最大数は、IPV4に、他の要因にIPアドレス分類を考慮せずに、接続の最大数は、2(数IPの乗約32 TCP変数であります)16×2パワー(ポート番号)、約48のパワーにサーバ側の単一のTCP接続2の、すなわち最大数。

概要
上記の結論は、実際には、同時接続のシングル数は確かにハードウェアリソース(メモリ)によって影響される、同時接続スタンドアロンTCPの理論的な数です、少なくとも私たちのニーズにネットワークリソース(帯域幅)制限は、今いくつか行うことができます同時実行100,000、あなたは何?

おすすめ

転載: www.cnblogs.com/peteremperor/p/10938335.html