web-dev-qa-db-ja.com

Linuxの最大ソケット数

サーバーは〜32720ソケットに制限されているようです...私はこの制限を引き上げるためにすべての既知の変数の変更を試みました。ただし、4Goの空きメモリと80%のアイドルCPUがある場合でも、サーバーは32720オープンソケットに制限されたままです...

これが設定です

~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63931
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 798621
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 2048
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63931
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

net.netfilter.nf_conntrack_max = 999999
net.ipv4.netfilter.ip_conntrack_max = 999999
net.nf_conntrack_max = 999999

何かご意見は ? (これまでのところ、運が悪かったスタックオーバーフローで尋ねられたこの質問)

12
TheSquad

私は何がすべてを制限しているかを見つけました:

max_map_count

答えてくれた皆さん、ありがとう!

8
TheSquad

これを間違った場所で探しています。ユーザー制限に達していない、システム制限に達している、32ビットシステムでは通常2の15乗です。小切手:

 % cat /proc/sys/kernel/pid_max 
 32768
 %

しかし、あなたもcan変更します。絶対的な上限として2 ** 22になる32ビットマシンでは、次のようになります。

% Sudo bash -c 'echo 4194303 > /proc/sys/kernel/pid_max'
%

どうやって行くのか知りたいです。

2
Xerxes

接続を開くことができるソケットの最大数を実際に調べようとしている場合は、cat/proc/sys/net/ipv4/ip_local_port_rangeを調べてみてください。これは、カーネルがアウトバウンドソケットに使用するポートの範囲であり、ディストリビューションに基づいてデフォルトが異なります。 '1024 65535'のような値に設定することは、それを得ることができるのと同じくらい広く開かれています。それが物事に役立つかどうかを確認してください。

1
pjz

スレッドで似たようなことが言われているとすいませんが、今は読む時間がありません:<

一見すると、あなたが言及するソケットの数は最大ユーザープロセスの約半分であることがわかります。私はあなたがすべてのソケットに対して別々のプロセスを持っていると推測できるので(おそらくあなたはサーバーまたはそのようなものを実行します)

あなたができることは、次にソケットの制限に達したときにプロセス数をチェックすることです。

ただのアイデアですが、それが役立つかどうかはわかりません。

0