Berapa hit kinerja untuk https vs http untuk apache?

50

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.

erotsppa
sumber
2
Akan menyenangkan melihat jawaban yang diterima untuk ini.
Hyppy

Jawaban:

57

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")

  • Waktu yang dibutuhkan untuk pengujian: 2,664 detik
  • Permintaan per detik: 3753.69 (# / dtk)
  • Waktu per permintaan: 0,266 ms

Hasil untuk https (" ab -n 10000 https://ubuntu904/index.html"):

  • Waktu yang dibutuhkan untuk pengujian: 107.673 detik
  • Permintaan per detik: 92,87 (# / detik)
  • Waktu per permintaan: 10.767ms

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 ( abopsi -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")

  • Waktu yang dibutuhkan untuk pengujian: 1.200 detik
  • Permintaan per detik: 8334,86 (# / detik)
  • Waktu per permintaan: 0,120 ms

Hasil untuk https dengan tetap-hidup (" ab -k -n 10000 https://ubuntu904/index.html"):

  • Waktu yang dibutuhkan untuk pengujian: 2,711 detik
  • Permintaan per detik: 3688.12 (# / dtk)
  • Waktu per permintaan: 0.271ms

Kesimpulan :

  • Dalam testcase https sederhana ini jauh lebih lambat dari http.
  • Sebaiknya aktifkan dukungan https dan patok situs web Anda untuk melihat apakah Anda ingin membayar biaya overhead https.
  • Gunakan wireshark untuk mendapatkan kesan overhead SSL.
knweiss
sumber
1
+1 Pekerjaan bagus di sana. Terima kasih telah memposting angka.
MN
Bisakah kita mendapatkan beberapa spesifikasi pada perangkat keras mesin itu? enkripsi sangat bergantung pada daya prosesor.
Matt Simmons
1
Saya baru-baru ini melakukan banyak pengujian pada VPS dan satu-satunya hal terbesar yang mempengaruhi kinerja adalah cipher yang digunakan. Jika Anda membatasi cipher untuk 128 bit maka Anda harus bisa mendapatkan sekitar 500-600 permintaan per detik. Menggunakan cipher 256bit yang akan turun menjadi <100 permintaan per detik. Saya percaya ketika saya melakukan pengujian sendiri, itu adalah 30 permintaan per detik. Jelas angka yang sebenarnya tergantung pada mesin Anda.
kovert
Matt Simmons, saya menggunakan 2 core 64-bit Ubuntu 9.04 VM (VMware Fusion) yang berjalan pada awal 2008 Mac Pro dengan 2x Quad-Core 2,8 GHz Intel Xeon CPU.
knweiss
Jawaban Anda telah mencegah saya memposting pertanyaan yang akan ditutup dalam 20 detik. Terima kasih!
MonkeyZeus
10

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.

David Pashley
sumber
2
David benar, itu tergantung pada jenis konten yang Anda miliki. Cara yang baik adalah dengan melakukan benchmark dengan apache bench httpd.apache.org/docs/2.2/programs/ab.html
radius
Selain kecepatan enkripsi, bagaimana dengan jabat tangan SSL, akankah hal itu berdampak pada kinerja server dan throughput?
erotsppa
Jabat tangan SSL akan menambahkan beberapa paket ke bagian depan koneksi. Dampak dari hal ini akan sangat tergantung pada latensi koneksi antara server dan klien. Keepalives HTTP akan mengurangi dampak jabat tangan ini.
David Pashley
8

Jangan berasumsi apa-apa, ujilah sendiri! Di aplikasi web spesifik Anda, tentu saja.

SaveTheRbtz
sumber
1

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.

Keith
sumber
1

Saya kedua rekomendasi untuk nginx. Dalam pengujian saya sendiri, ini telah bertahan dengan baik sebagai offloader SSL khusus.

Chris
sumber
0

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.

Koperasi
sumber
0

Saya dapat mengonfirmasi bahwa beban tambahan untuk enkripsi sangat kecil dibandingkan dengan setiap elemen lain yang disertakan (skrip, jaringan, ...)

Francesco Abeni
sumber
0

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.

Areeb Soo Yasir
sumber