Aktifkan KeepAlive atau tidak?

9

Apa konsensus tentang KeepAlive yang aktif dengan situs Magento dengan lalu lintas tinggi? Tampaknya kebanyakan orang merekomendasikan untuk mengaktifkannya tetapi kemudian Magento menyatakan untuk tidak melakukannya dalam Memaksimalkan Kinerja dan Skalabilitas mereka dengan Magento Enterprise Edition, menurut mereka

"Ketika server web berada di bawah beban yang berat, menjaga koneksi yang persisten menjadi tidak menguntungkan, sehingga arahan KeepAlive harus selalu dinonaktifkan"

Pikiran?

Jeremy Miller
sumber

Jawaban:

4

Pertanyaan bagus!

Secara tradisional, KeepAlive adalah hal yang baik karena secara signifikan mengurangi overhead TCP dari keseluruhan halaman memuat, di mana banyak permintaan (seperti semua gambar, css, js) dilayani dari satu server. Jika halaman Anda memiliki 85 aset, itu 85 jabat tangan TCP tiga arah tambahan, dan latensi bertambah. Bertahun-tahun yang lalu dengan koneksi Internet yang lebih lambat, ini jauh lebih penting daripada sekarang, meskipun masih cukup relevan untuk browser seluler atau koneksi lambat / latensi tinggi.

Dampak yang disebutkan di sini berkaitan dengan jumlah waktu koneksi TCP itu tetap terbuka, dan apakah itu bisa dengan cepat menghabiskan proses anak Apache Anda. Sebagian besar default yang saya lihat adalah:

KeepAliveTimeOut 15
MaxClients 256

Ini berarti bahwa jika saya memiliki 256 browser yang berbeda meminta konten dalam 15 detik yang sama, maka klien ke-257 harus menunggu koneksi terputus. Tidak bagus - ini bukan lalu lintas yang tinggi sekali, jadi itu menjelaskan saran itu. Ini juga dapat menyebabkan seseorang meningkatkan MaxClients untuk mengatasinya, yang dapat memakan banyak memori. Ketika saya menggunakan KeepAlives, saya biasanya mengatur KeepAliveTimeout menjadi 2 atau 3 detik; ini adalah waktu idle antara permintaan dan bukan seluruh waktu untuk semua permintaan.

Jika Anda menggunakan KeepAlive, ada tindakan penyeimbangan antara KeepAliveTimeout, MaxClients, dan sumber daya server. Untuk membantu dengan itu, 'layanan httpd / apache2 fullstatus' akan menunjukkan kepada Anda jumlah koneksi yang digunakan oleh KeepAlives pada satu waktu - ditunjukkan dengan huruf besar 'K'.

Untuk Magento, saya pikir Anda tidak perlu KeepAlives.

Apa yang harus Anda lakukan jika Anda memiliki situs Perusahaan dengan lalu lintas yang sangat tinggi, menggunakan CDN untuk konten statis Anda.

Jika Anda menjual di banyak negara, menggunakan CDN tidak hanya akan mempercepat pemuatan halaman keseluruhan untuk pelanggan Anda (yang bagus) tetapi secara besar-besaran mengurangi bandwidth yang masuk ke server Anda. Pengaturan di bawah System> Config> Web> [Un] secure membuatnya sangat sepele untuk mengintegrasikan CDN apa pun untuk Media, Skin, dan JavaScript. Ini akan menjadi bagian terbesar dari permintaan HTTP aktual, dan sebagai bonus Anda dapat menggunakan catatan DNS yang berbeda untuk memparalelkan unduhan di seluruh nama host. Jika Anda melakukannya dengan benar maka permintaan tersebut hampir tidak akan menyentuh server Anda, jadi tidak ada lagi kebutuhan nyatauntuk KeepAlive. Dalam hal ini, Anda harus menonaktifkan KA; kami tidak ingin menjaga koneksi tetap hidup ketika kami tahu konten lainnya dilayani dari tempat lain. Jika Anda menginginkan rekomendasi CDN mandiri: CloudFlare fantastis, dan Anda bahkan mendapatkan SSL yang disertakan dengan paket gratis.

Saat menggunakan CDN seperti ini, atau jika Anda menggunakan jenis lain dari proxy terbalik (seperti Varnish), Apache HTTP KeepAlives Anda pada dasarnya tidak relevan.

Untuk meringkas, saya setuju bahwa Anda mungkin harus menonaktifkan KeepAlive untuk menghindari menjenuhkan proses Apache Anda di bawah beban, tetapi pasti menggunakan CDN atau proksi terbalik lainnya untuk aset, untuk menjaga agar halaman Anda memuat secepat mungkin.

Will Parsons
sumber
1
Keepalives masih relevan selama tarikan asal dari CDN. Mengaktifkan / menonaktifkan seharusnya tidak dianggap enteng dan harus diuji secara menyeluruh. Saya akan menyarankan pengurangan permintaan, mengurangi aset bahkan sebelum mempertimbangkan CDN - salah konfigurasi, mereka dapat dengan mudah membuat toko lebih lambat, daripada lebih cepat.
Ben Lessani - Sonassi
Bagaimana cara mengatur sistem lokal pengaturan keepalive ini untuk server XAMPP?
bhavin thummar