Jumlah soket maksimum di Linux

12

Tampaknya server terbatas pada ~ 32720 soket ... Saya telah mencoba setiap perubahan variabel yang diketahui untuk menaikkan batas ini. Tetapi server tetap terbatas pada soket terbuka 32720, bahkan jika masih ada 4Go memori bebas dan 80% dari ...

Ini konfigurasinya

~# 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

Adakah pikiran? (Pertanyaan ini seperti yang ditanyakan pada stack-overflow tanpa hasil sejauh ini)

TheSquad
sumber
serverfault.com/questions/10852/… memiliki beberapa data yang bagus
sysadmin1138
Seperti halnya stackoverflow.com/questions/410616/…
sysadmin1138
Saya memang memeriksa utas-utas tersebut sebelum memposting, tanpa hasil
TheSquad

Jawaban:

8

Saya telah menemukan apa yang membatasi segalanya:

max_map_count

Terima kasih untuk semuanya yang telah menjawab !

TheSquad
sumber
Jadi soket adalah herring merah. Senang mendengarnya.
pjz
Bagaimana Anda mengubahnya? Apakah Anda memiliki dokumen yang menjelaskan fungsinya?
Ryan Shillington
2

Anda mencari di tempat yang salah untuk yang ini; Anda tidak berlari ke batas pengguna, Anda berlari ke batas sistem yang umumnya kekuatan 15 dari 2 pada sistem 32-bit, yang saya kira sistem Anda menjadi. Memeriksa:

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

Tetapi Anda juga bisa mengubahnya; pada mesin 32-bit yang akan menjadi 2 ** 22 sebagai batas atas absolut, jadi:

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

Saya akan tertarik untuk mengetahui bagaimana Anda pergi.

Xerxes
sumber
pid_max sudah jam 999999
TheSquad
1

Jika Anda benar-benar mencoba melihat jumlah soket maksimum yang dapat Anda buka koneksi, Anda dapat mencoba melihat cat / proc / sys / net / ipv4 / ip_local_port_range; ini adalah kisaran port yang akan digunakan kernel untuk soket keluar, dan memiliki default yang berbeda berdasarkan distribusi Anda. Mengaturnya ke sesuatu seperti '1024 65535' adalah seluas terbuka yang Anda bisa; lihat apakah itu bisa membantu.

pjz
sumber
ip_local_port_range sudah ada di 1024 65535.
TheSquad
0

Saya minta maaf jika sesuatu yang serupa dikatakan di utas, tetapi saya tidak punya waktu untuk membacanya sekarang: <

Dengan tampilan pertama saya melihat bahwa jumlah soket yang Anda sebutkan adalah sekitar setengah dari proses pengguna maksimum. Karena saya bisa menebak Anda memiliki proses yang terpisah untuk setiap soket (sebaiknya Anda menjalankan server atau sesuatu seperti itu)

Apa yang dapat Anda lakukan adalah memeriksa jumlah proses saat berikutnya Anda mencapai batas soket.

Hanya sebuah ide, saya tidak tahu apakah itu membantu.

Nikolaidis Fotis
sumber
tidak, bukan itu: # ps -ef | grep -c 'root' = 147
TheSquad
Apakah itu di bawah lingkungan yang terkendali? bisakah kamu membuat cek? misalnya, berapa banyak proses yang dibuat dengan setiap permintaan? Juga, apa prioritas server? Jika Anda memperbaikinya, apakah itu mengubah sesuatu? Jika tidak, maka saya hampir yakin bahwa Anda mencapai batas proses atau batas utas di dalam suatu proses:>
Nikolaidis Fotis