Apache KeepAliveTimeout
ada untuk menutup koneksi tetap hidup jika permintaan baru tidak dikeluarkan dalam periode waktu tertentu. Asalkan pengguna tidak menutup browser / tabnya, batas waktu ini (biasanya 5-15 detik) adalah yang akhirnya menutup sebagian besar koneksi yang tetap hidup, dan mencegah sumber daya server terbuang sia-sia dengan menahan koneksi tanpa batas.
Sekarang MaxKeepAliveRequests
arahan memberikan batasan pada jumlah permintaan HTTP yang KeepAlive
akan dilayani oleh koneksi TCP tunggal (dibiarkan terbuka karena ). Mengatur ini 0
berarti jumlah permintaan yang tidak terbatas diizinkan.
Mengapa Anda mengatur ini selain "tidak terbatas"? Asalkan klien masih secara aktif membuat permintaan, apa salahnya membiarkan mereka terjadi pada koneksi tetap-hidup yang sama? Setelah batas tercapai, permintaan masih masuk, hanya pada koneksi baru.
Cara saya melihatnya, tidak ada gunanya membatasi ini. Apa yang saya lewatkan?
sumber
Sebagian, untuk menjaga agar satu pengguna tidak memonopoli semua slot koneksi. Tanpa batas, satu klien jahat atau yang ditulis dengan buruk dapat mengambil alih setiap koneksi yang tersedia dan bertahan selamanya. Ini bukan mitigasi yang bagus untuk itu, bagaimanapun, dibandingkan dengan sesuatu seperti batas koneksi per-IP.
Sebagian besar load balancing, tetapi secara khusus berkaitan dengan pemeliharaan. Jika Anda ingin membuat server offline, Anda menjatuhkannya ke 0 koneksi tetapi memungkinkan koneksi yang ada selesai untuk beberapa waktu. Menempatkan batas pada jumlah permintaan keepalive berarti bahwa pada akhirnya pengguna akan dengan anggun membuat koneksi baru dan dipindahkan ke server back-end baru. Mungkin beberapa cara untuk memberi sinyal ke server bahwa ia harus berhenti menerima keepalives sama sekali selama proses pembuangan akan lebih baik, tetapi sejauh yang saya tahu fitur seperti itu tidak ada.
sumber