まず、結論:
-
ホストで最大65535のTCP接続のみを維持できますか?
- クライアントはこのようなものですが、サーバーはそうではありません
-
それは重要ですか
- 。関連
-
クライアントのために
- TCP quadruple sportによると、このスポーツは16ビットしかないため、クライアントの場合は65535しかありません。したがって、(2 ^ 16)-1は65535です。つまり、使用可能なポートは最大65535です。ここでは、SOCK_REUSEOPTを含まない、長いリンクについてのみ説明します。
- ただし、クライアントが同じサーバーへの65535接続を維持できるとは言えません。
- システムが占有する1024未満
- local_port_rangeパラメータは、使用可能なポート範囲を制御します
sctl -a | grep port_rangenet.ipv4.ip_local_port_range = 50000 65000 -----これは、50000〜65000ポートが使用可能である
ことを意味します。ip_local_port_rangeを変更することで範囲を拡張できますが、65535にしか到達できません
-
。サーバーの場合
- 65535の制限は、単一のクライアントIPリンクに対するものです。
- より多くの接続を維持するためにMAX OPEN FILEを調整します
- より広いポート範囲をサポートするようにip_local_port_rangeを調整します(ただし、それほど多くのポートを確立する必要のあるクライアントはないはずですか?)
-
- 。関連
発生したエラーコード:
- 要求されたアドレスを割り当てることができません。
- 実際、ポート範囲は不十分です
- 開いているファイルが多すぎる(開いているファイルが多すぎる)
- 開口部の最大数を変更してください
テスト環境:
- 5 ubuntu 2G 2U、そのうちの1つはSERVER
テスト結果:
- そのときに設定したMAX OPEN FILEは102400であり、最大テストは約102100のロングリンク(ESTABLISHED状態)であり、それらはすべて102400に等しくなかったため、一部はシステムによって占有されているはずです
テストコード
以下は、テストコードのアドレスです。上記の2つのパラメーターを変更し、2つのマシンを使用してテストし
ますhttps://gist.github.com/lisqorz/165204c1703b3cad325231ecbade3876
さらに読む
4つ組の理解に興味がある人は、記事https://www.cnblogs.com/ouzi/archive/2012/10/29/2745430.htmlをフォローできます
。
記述子の操作に興味がある場合は、これを見ることができます