web-dev-qa-db-ja.com

LinuxのIPアドレスごとに65536オープンTCP接続)のハード制限はありますか?

LinuxのIPアドレスごとに65536オープンTCP接続のハード制限はありますか?どこかで読んだことがあるのですが、誰かが確認を求めてきて見つけられません。

どういうわけかそれを制限する16ビット整数であるファイル記述子についての何かであったことを覚えているようです?

それともこのホクムで、サーバーの強度以外に制限はありませんか?

23
Chris

ポートの数を考えているかもしれません。 TCPには65536個のポートがあります。これはLinuxの制限ではなく、プロトコルの一部です。IPアドレスはマシンを識別し、ポートはマシン上のプログラム。

ただし、接続数はそれによって制限されません。接続は5つの情報で構成され、オタクでは5タプルを話します。プロトコル(TCP、UDP)、ローカルIPアドレスとポート、およびリモートIPアドレスとポートによって決定されます。だから、ウェブサーバーを取る。同じポート(多くの場合80)で多くの接続を処理できます。 Webサーバーは、同じクライアントマシンへの複数の接続をサポートすることもできます。たとえば、2つのウィンドウからgoogle.comに接続しているとします。マシンは、接続ごとに未使用のポートを選択します。したがって、Googleのサーバーは(TCP、google.com、80、yourmachine、someport1)と(TCP、google.com、80、yourmachine、someport2)を追跡する必要があります。ある時点で制限にぶつかるでしょうが、それはハード制限ではなく、システムに大きく依存します。

そして、はい、各ソケットはファイル記述子ですが、すべてのマシンがfdテーブルのショートを使用するわけではありません。私のシステムでは、まったくチューニングされていないシステム、cat /proc/sys/fs/file-maxは323997を返します。必要に応じて、ブーストできると確信しています。

したがって、上限は65336ですが、接続数ではなく、アドレッシングに関係しています。接続数は制限されていますが、システム構成とそれが持つメモリの量によってさらに多くなります。

35
Rich Homolka