Apache için https vs http performansının ne kadarıdır?


50

Https’un aynı sayfa için http’e kıyasla kabaca ne kadar performans alacağı Abc.php için 1000 istek / saniye işleyebileceğimi varsayalım, https ile erişildiğinde ne kadar azalacak? Bunun donanıma, yapılandırmaya, işletim sistemine vb. Bağlı olabileceğini biliyorum, ancak genel bir kural / tahmin kuralı arıyorum.


2
Bunun için kabul edilmiş bir cevap görmek güzel olurdu.
Hyppy

Yanıtlar:


57

Hızlı ve kirli bir test için (yani herhangi bir optimizasyon yok!) Yerel bir Ubuntu 9.04 VM'de hem http hem de https (kendinden imzalı sertifika) ile basit Ubuntu apache2 varsayılan web sitesini etkinleştirdim (sadece "Çalışıyor!" Diyor) ve apache'yi çalıştırdım ab10.000 istek ("eşzamanlılık yok)" ile kıyaslama . İstemci ve sunucu aynı makinedeydi / VM:

Sonuçlar http (" ab -n 10000 http://ubuntu904/index.html")

  • Testler için harcanan süre : 2.664 saniye
  • Saniyedeki istek sayısı: 3753.69 (# / sn)
  • İstek başına süre: 0,266ms

İçin sonuçlar https (" ab -n 10000 https://ubuntu904/index.html"):

  • Testler için harcanan süre : 107.673 saniye
  • Saniyedeki istek sayısı: 92,87 (# / sn)
  • İstek başına süre: 10.767ms

Tek bir isteğin tcp / ip iletişimine daha yakından bakarsanız (örneğin, tcpdump veya wireshark ile) bakarsanız , http vakasının istemci ile sunucu arasında 10 paket gerektirdiğini görürsünüz; https 16: Latency https ile çok daha yüksektir. ( Burada gecikmenin önemi hakkında daha fazla bilgi )

Teste canlı kalmayı ( abseçenek -k) eklemek durumu iyileştirir, çünkü artık tüm istekler aynı bağlantıyı paylaşır, yani SSL ek yükü düşüktür - ancak https hala ölçülebilir şekilde yavaşlar:

Sonuçlar http ile canlı tutma (" ab -k -n 10000 http://ubuntu904/index.html")

  • Testler için harcanan zaman: 1.200 saniye
  • Saniyedeki istek sayısı: 8334.86 (# / sn)
  • İstek başına süre: 0.120ms

Keep-alive (" ") ile https sonuçları ab -k -n 10000 https://ubuntu904/index.html:

  • Testler için harcanan süre : 2.711 saniye
  • Saniyedeki istek sayısı: 3688.12 (# / sn)
  • İstek başına zaman: 0.271 ms

Sonuç :

  • Bu basit test durumunda https http'den çok daha yavaştır.
  • Https desteğini etkinleştirmek ve https ek masrafı için ödeme yapmak isteyip istemediğinizi görmek için web sitenizi ölçmek iyi bir fikirdir .
  • SSL ek yükü hakkında bir fikir edinmek için wireshark kullanın.

1
+1 Orada iyi iş çıkardın. Numaraları gönderdiğin için teşekkürler.
MN,

Makinenin donanımı hakkında biraz bilgi alabilir miyiz? şifreleme yüksek işlemci gücüne bağlıdır.
Matt Simmons

1
Geçenlerde bir VPS üzerinde çok fazla test yaptım ve performansı etkileyen en büyük tek şey kullanılan şifre oldu. Şifreleri 128 bit ile sınırlandırırsanız, saniyede yaklaşık 500-600 istek alabilmeniz gerekir. Saniyede <100'e düşecek bir 256bit şifre kullanmak. Kendi testlerimi yaptığımda saniyede 30 istek olduğuna inanıyorum. Açıkçası, gerçek sayılar makinenize bağlı.
kovert, temmuz

Matt Simmons, 2x Dört Çekirdekli 2.8 GHz Intel Xeon işlemcili bir 2008 Mac Pro'da çalışan 2 çekirdekli 64-bit Ubuntu 9.04 VM (VMware Fusion) kullandım.
knweiss

Cevabınız, 20 saniye içinde kapanacak bir soru göndermemi engelledi. Teşekkürler!
MonkeyZeus

10

Modern sunucularda, darboğazınızın şifreleme değil ağ ve uygulamanız olacağını söyleyebilirim. Apache'deki TLS / SSL oldukça optimize edilmiş C ile yazılacaktır, bu nedenle özellikle veritabanı erişimi gibi şeyler yapacaksanız, PHP kodunuz tarafından dwarfed edilecektir. Statik dosyaların sunulması muhtemelen daha büyük bir etkiye sahip olacak çünkü şifreleme işlemi tüm sürecin daha büyük bir parçası olacak. Size somut rakamlar veremem, ancak% 5'ten daha büyükse ve muhtemelen bir kaç yüzde daha yakınsa şaşırırdım.


2
David haklı, sahip olduğunuz içeriğe bağlı. En iyi yol apache bench ile kıyaslama yapmak olacaktır httpd.apache.org/docs/2.2/programs/ab.html
radius

Şifreleme hızının yanı sıra, SSL el sıkışması ne olur, bunun sunucu performansı ve verimi üzerinde bir etkisi olur mu?
erotsppa

SSL anlaşması, bağlantının önüne birkaç paket ekleyecektir. Bunun etkisi büyük ölçüde sunucu ve müşteri arasındaki bağlantının gecikmesine bağlı olacaktır. HTTP sürdürücüleri bu el sıkışmasının etkisini azaltacaktır.
David Pashley


1

Modern donanımda, belirli bir işlem için G / Ç'ye bağlı olma ihtimalimin işlemcime (hesaplama) bağlı olduğumdan daha yüksek olduğunu düşünüyorum. Bu özellikle sıkıştırma ve şifreleme hakkında konuşurken doğrudur. 128-bit şifreleme bu günlerde önemsizdir - Genellikle SSL kullandığımdan daha fazla bina oluşturma ve çıkış yapma konusunda çok daha fazla etkileniyorum ve birkaç yıl içinde http ve https trafiği arasındaki performansta önemli bir fark görmedim.


1

Ben nginx için öneri ikinci. Kendi testlerimde, özel bir SSL boşaltıcı olarak iyi bir şekilde uygulandı.


0

Elbette, SSL işlemesi sert bir şekilde ortaya çıkarsa, her zaman sunucudan ayrı bir kutuya taşıyabilirsiniz. Buraya nginx ile yapmanın güzel bir yazı var . Bu, oldukça yüklü katman 7 yüklü dengeli sunucularda yaptığımız bir şey.


0

Şifreleme için eklenen yükün, dahil olan diğer tüm öğelere (komut dosyası, ağ, ...) kıyasla çok küçük olduğunu onaylayabilirim.


0

Tecrübelerime göre, genel kural doğrudan ortak anahtarınızın ne kadar büyük olduğuyla doğrudan ilgilidir (örneğin, 2048, vs 4096, vs 8192). Bununla birlikte, Masaüstü ortamındaki bir farkı hemen hemen fark edemiyorum, ancak mobil işlem, bilgisayar gücünü aldığı için bir fark gördüğünüz yerdir.

Genelde talihsiz bir durumdur ancak SSL her zaman büyük olasılıkla her zaman büyük bir performans cezası alır ve olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.