Berapa jumlah maksimum koneksi TCP yang dapat saya miliki di Windows Server 2008?

11

Saya ingin memiliki banyak koneksi (koneksi tunggal dari banyak klien yang berbeda) secara manusiawi mungkin dalam server yang berjalan pada Windows Server 2008, untuk mendukung aplikasi gaya Comet. Aplikasi ini ditulis dalam C #. Koneksi tidak akan cerewet, mereka hanya perlu terbuka (dan tetap terbuka). Membeli banyak memori dan CPU cepat tidak menjadi masalah.

Sejauh yang saya tahu, saya akan dibatasi hingga 65k koneksi terbuka simultan per NIC - jumlah maksimum port. Apakah ini akurat? Atau bisakah saya melampaui koneksi 65k / NIC? Sepertinya ada produk server untuk Linux setidaknya yang mendukung ratusan ribu koneksi. bagaimana mereka melakukan ini?


sumber

Jawaban:

9

Anda dapat melampaui koneksi 65k; karena Anda dapat memiliki beberapa koneksi per port (setelah diterima, pendengar dapat terhubung ke klien lain). Satu ujung atau yang lain memang harus memiliki beberapa perbedaan, biasanya klien memilih port acak. Windows secara default terbatas pada beberapa lebih dari 3000 port acak ini; jadi klien tipikal Anda akan max sekitar itu. Namun dimungkinkan untuk mengkonfigurasi klien secara berbeda, dan banyak * nix dibatasi lebih banyak daripada Windows.

Ada pengaturan registri yang membatasi jumlah koneksi maksimum hingga 16 juta. Tetapi ada masalah lain yang lebih praktis yang biasanya akan membatasi Anda menjadi lebih sedikit (Anda dapat mengubah nilai registri).

  • Windows membutuhkan sekitar 1KB RAM per koneksi (Itu ~ 16GB untuk koneksi 16M); dan aplikasi Anda juga harus melacak koneksi aktifnya entah bagaimana (lebih banyak memori).
  • Windows juga akan memeriksa koneksi non-responsif selama 2 jam. Pada koneksi 16M, ini adalah tentang setiap 0,5 ms; itu akan mengambil bandwidth yang signifikan hanya dengan melakukan pemeriksaan itu.
Chris S
sumber
1
@evilfred: port ephemeral adalah untuk koneksi TCP keluar, yang berarti bahwa mesin klien akan menggunakan port ephemeral ketika terhubung ke server web Anda pada port 80. Seperti yang dikatakan Chris S, setelah sesi itu ditetapkan, server web dapat membuat yang lain koneksi pada port 80 dari klien yang berbeda. Juga, saya pikir dia menyebutkan batas port ephemeral klien dalam mencoba menjadi lengkap dalam jawabannya, batas port ephemeral klien ini bukan urusan Anda, itu urusan klien. @ Chris S: Saya harap saya tidak salah menyebutkan apa yang Anda maksudkan dalam jawaban Anda.
joeqwerty
1
Jadi tidak ada batasan nyata pada jumlah koneksi masuk yang dapat didukung server pada satu IP? Bagaimana server mengetahui ke mana harus mengirim data yang diterimanya dari klien jika port tujuan dibagikan?
1
Saya tidak peduli dengan klien.
1
@ evilfred: Setiap sesi TCP "dikelola" melalui apa yang disebut 4-tuple, yang merupakan klien ip | klien port <> server ip | port server. Itulah cara server mengelola lalu lintas antara setiap sesi pada port "bersama", seperti port 80 pada server web.
joeqwerty
1
Saya tahu itu. Hanya ada 65k kemungkinan port server per IP. Oleh karena itu ada maksimum 65k soket aktif per IP.