Kira-kira berapa banyak hit kinerja yang akan diambil https dibandingkan dengan http untuk halaman yang sama? Misalkan saya dapat menangani 1000 permintaan / s untuk abc.php, berapa banyak penurunannya saat diakses melalui https? Saya tahu ini mungkin tergantung pada perangkat keras, konfigurasi, OS dll, tetapi saya hanya mencari aturan umum / perkiraan.
apache-2.2
performance
erotsppa
sumber
sumber
Jawaban:
Untuk pengujian cepat & kotor (mis. Tanpa optimasi apa pun!) Saya mengaktifkan situs web standar sederhana apache2 Ubuntu (yang hanya mengatakan "Berhasil!") Dengan http dan https (sertifikat yang ditandatangani sendiri) pada Ubuntu 9,04 VM lokal dan menjalankan apache patokan "
ab
" dengan 10.000 permintaan (tanpa konkurensi). Klien dan server berada di mesin / VM yang sama:Hasil untuk http ("
ab -n 10000 http://ubuntu904/index.html
")Hasil untuk https ("
ab -n 10000 https://ubuntu904/index.html
"):Jika Anda melihat lebih dekat (misalnya dengan tcpdump atau wireshark) pada komunikasi tcp / ip dari satu permintaan, Anda akan melihat bahwa case http membutuhkan 10 paket antara klien dan server sedangkan https membutuhkan 16: Latency jauh lebih tinggi dengan https. (Lebih lanjut tentang pentingnya latensi di sini )
Menambahkan keep-hidup (
ab
opsi-k
) ke tes meningkatkan situasi karena sekarang semua permintaan berbagi koneksi yang sama yaitu overhead SSL lebih rendah - tetapi https masih lebih lambat terukur:Hasil untuk http dengan tetap-hidup ("
ab -k -n 10000 http://ubuntu904/index.html
")Hasil untuk https dengan tetap-hidup ("
ab -k -n 10000 https://ubuntu904/index.html
"):Kesimpulan :
sumber
Pada server modern, saya akan mengatakan bahwa kemacetan Anda adalah jaringan dan aplikasi Anda, bukan enkripsi. TLS / SSL dalam apache akan ditulis dalam C yang dioptimalkan dengan baik, sehingga akan dikerdilkan oleh kode PHP Anda, terutama jika Anda akan melakukan hal-hal seperti akses basis data. Melayani file statis mungkin akan berdampak lebih besar, karena enkripsi akan menjadi bagian yang lebih besar dari keseluruhan proses. Saya tidak bisa memberi Anda angka konkret, tetapi saya akan terkejut jika itu lebih dari 5% dan mungkin lebih dekat beberapa persen.
sumber
Jangan berasumsi apa-apa, ujilah sendiri! Di aplikasi web spesifik Anda, tentu saja.
sumber
Saya menemukan bahwa pada perangkat keras modern, saya lebih cenderung terikat I / O untuk transaksi tertentu daripada terikat prosesor (komputasi). Ini terutama benar ketika berbicara tentang kompresi dan enkripsi. Enkripsi 128-bit adalah sepele akhir-akhir ini - saya biasanya mendapatkan bangunan yang jauh lebih sulit dan memberikan halaman keluar daripada saya menggunakan SSL, dan belum melihat perbedaan yang signifikan dalam kinerja antara lalu lintas http dan https dalam beberapa tahun.
sumber
Saya kedua rekomendasi untuk nginx. Dalam pengujian saya sendiri, ini telah bertahan dengan baik sebagai offloader SSL khusus.
sumber
Tentu saja jika pemrosesan SSL sangat terpukul, Anda selalu dapat memindahkannya dari server ke kotak khusus. Ada baiknya menulis melakukan ini dengan nginx di sini . Ini adalah sesuatu yang telah kami lakukan pada server seimbang yang memuat lapisan 7.
sumber
Saya dapat mengonfirmasi bahwa beban tambahan untuk enkripsi sangat kecil dibandingkan dengan setiap elemen lain yang disertakan (skrip, jaringan, ...)
sumber
Dari pengalaman saya, aturan umum terkait langsung dengan seberapa besar kunci publik Anda (mis. 2048, vs 4096, vs 8192) semua memakan waktu lebih lama secara signifikan. Namun saya hampir tidak dapat melihat perbedaan dalam lingkungan Desktop, tetapi mobile adalah tempat Anda melihat perbedaan karena dibutuhkan daya komputasi.
Secara umum sangat disayangkan tetapi SSL selalu dan kemungkinan akan selalu mengambil penalti kinerja yang sangat besar.
sumber