अपाचे के लिए https बनाम http के लिए कितना प्रदर्शन हिट हुआ?


50

मोटे तौर पर एक ही पृष्ठ के लिए http के मुकाबले https प्रदर्शन कितना हिट होगा? मान लीजिए कि मैं abc.php के लिए 1000 अनुरोध / एस को संभाल सकता हूं, तो https के माध्यम से पहुंचने पर यह कितना घट जाएगा? मुझे पता है कि यह हार्डवेयर, कॉन्फ़िगरेशन, ओएस आदि पर निर्भर हो सकता है, लेकिन मैं सिर्फ अंगूठे / अनुमान के एक सामान्य नियम की तलाश कर रहा हूं।


2
इसके लिए एक स्वीकृत उत्तर देखना अच्छा होगा।
हैप्पी

जवाबों:


57

एक त्वरित और गंदे परीक्षण के लिए (अर्थात कोई अनुकूलन नहीं!) मैंने सरल Ubuntu Apache2 डिफ़ॉल्ट वेबसाइट (जो सिर्फ "" यह काम करता है! ") को एक स्थानीय Ubuntu 9.04 VM पर http और https (स्व-हस्ताक्षरित प्रमाणपत्र) दोनों के साथ सक्षम किया और अपाचे को चलाया। बेंचमार्क " ab" 10,000 अनुरोधों के साथ (कोई संगाम नहीं)। क्लाइंट और सर्वर एक ही मशीन / वीएम पर थे:

Http (" ab -n 10000 http://ubuntu904/index.html") के परिणाम

  • परीक्षणों के लिए लिया गया समय: 2.664 सेकंड
  • प्रति सेकंड अनुरोध: 3753.69 (# / सेकंड)
  • अनुरोध के अनुसार समय: 0.266ms

Https (" ab -n 10000 https://ubuntu904/index.html") के परिणाम :

  • परीक्षणों के लिए समय लिया गया: 107.673 सेकंड
  • प्रति सेकंड अनुरोध: 92.87 (# / सेकंड)
  • अनुरोध के अनुसार समय: 10.767 मी

यदि आप किसी एकल अनुरोध के tcp / ip संचार पर एक नज़दीकी नज़र रखते हैं (जैसे tcpdump या wirehark के साथ), तो आप देखेंगे कि http मामले में क्लाइंट और सर्वर के बीच 10 पैकेट की आवश्यकता होती है, जबकि https के लिए 16 की आवश्यकता होती है: https के साथ विलंबता बहुत अधिक है। ( यहाँ विलंबता के महत्व के बारे में अधिक )

परीक्षण में जीवित- abविकल्प ( विकल्प -k) जोड़ने से स्थिति में सुधार होता है क्योंकि अब सभी अनुरोध समान कनेक्शन साझा करते हैं यानी SSL ओवरहेड कम है - लेकिन https अभी भी औसत दर्जे का धीमा है:

रखने के साथ http के लिए परिणाम जीवित (" ab -k -n 10000 http://ubuntu904/index.html")

  • परीक्षणों के लिए लिया गया समय: 1.200 सेकंड
  • प्रति सेकंड अनुरोध: 8334.86 (# / सेकंड)
  • अनुरोध के अनुसार समय: 0.120 मी

रख- रखाव के साथ https के लिए परिणाम (" ab -k -n 10000 https://ubuntu904/index.html"):

  • परीक्षणों के लिए लिया गया समय: 2.711 सेकंड
  • प्रति सेकंड अनुरोध: 3688.12 (# / सेकंड)
  • अनुरोध के अनुसार समय: 0.271ms

निष्कर्ष :

  • इस साधारण टेस्टकेस में http, http की तुलना में बहुत धीमा है।
  • यदि आप https ओवरहेड के लिए भुगतान करना चाहते हैं, तो यह देखने और अपनी वेबसाइट को बेंचमार्क करने में सक्षम बनाने के लिए एक अच्छा विचार है ।
  • SSL ओवरहेड की छाप पाने के लिए वायरशर्क का उपयोग करें।

1
+1 अच्छा काम है। नंबर पोस्ट करने के लिए धन्यवाद।
MN

क्या हम उस मशीन के हार्डवेयर पर कुछ चश्मा प्राप्त कर सकते हैं? एन्क्रिप्शन प्रोसेसर शक्ति पर अत्यधिक निर्भर है।
मैट सिमंस

1
मैंने हाल ही में एक वीपीएस पर बहुत परीक्षण किया था और प्रदर्शन को प्रभावित करने वाली सबसे बड़ी बात यह थी कि सिफर का उपयोग किया जा रहा था। यदि आप सिफर्स को 128बिट्स तक सीमित करते हैं तो आपको एक सेकंड में लगभग 500-600 अनुरोध प्राप्त करने में सक्षम होना चाहिए। एक 256bit सिफर का उपयोग करना जो एक सेकंड में <100 अनुरोधों को छोड़ देगा। मेरा मानना ​​है कि जब मैंने अपना स्वयं का परीक्षण किया तो यह 30 अनुरोधों का एक सेकंड था। जाहिर है वास्तविक संख्या आपकी मशीन पर निर्भर करती है।
13:00 पर kovert

मैट सीमन्स, मैंने 2 कोर 64-बिट उबंटू 9.04 वीएम (वीएमवेयर फ्यूजन) का इस्तेमाल किया, जो 2008 के शुरुआत में मैक प्रो पर 2x क्वाड-कोर 2.8 गीगाहर्ट्ज इंटेल एक्सॉन सीपीयू के साथ चल रहा था।
चाकू

आपके उत्तर ने मुझे एक सवाल पोस्ट करने से रोक दिया है जो 20 सेकंड के भीतर बंद हो गया होगा। धन्यवाद!
मंकीज डेस

10

आधुनिक सर्वरों पर, मैं कहूंगा कि आपकी अड़चन नेटवर्क और आपका अनुप्रयोग होगा, एन्क्रिप्शन नहीं। Apache में TLS / SSL को काफी अनुकूलित C में लिखा जाएगा, इसलिए आपके PHP कोड से बौना हो जाएगा, खासकर यदि आप डेटाबेस एक्सेस जैसी चीजें करने जा रहे हैं। स्थैतिक फ़ाइलों की सेवा करना संभवतः एक बड़ा प्रभाव होगा, क्योंकि एन्क्रिप्शन पूरी प्रक्रिया का एक बड़ा हिस्सा बन जाएगा। मैं आपको कोई ठोस आंकड़ा नहीं दे सकता, लेकिन मुझे आश्चर्य होगा अगर यह 5% से अधिक था और शायद कुछ प्रतिशत के करीब।


2
डेविड सही है, यह उस तरह की सामग्री पर निर्भर करता है जो आपके पास है। अपाचे बेंच httpd.apache.org/docs/2.2/programs/ab.html
त्रिज्या

एन्क्रिप्शन गति के अलावा, SSL हैंडशेक के बारे में क्या, सर्वर प्रदर्शन और थ्रूपुट पर कोई प्रभाव पड़ेगा?
इरॉट्सप्पा

SSL हैंडशेक एक कनेक्शन के सामने कुछ पैकेट जोड़ देगा। इसका प्रभाव सर्वर और क्लाइंट के बीच संबंध की विलंबता पर व्यापक रूप से निर्भर करेगा। HTTP रखवाले इस हैंडशेकिंग के प्रभाव को कम कर देंगे।
डेविड पस्ले


1

मुझे लगता है कि आधुनिक हार्डवेयर पर, मैं एक विशेष लेनदेन के लिए I / O बाध्य होने की अधिक संभावना है, जो कि मैं प्रोसेसर (कंप्यूट) बाध्य हूं। संपीड़न और एन्क्रिप्शन के बारे में बात करते समय यह विशेष रूप से सच है। 128-बिट एन्क्रिप्शन इन दिनों तुच्छ है - मैं आमतौर पर बहुत कठिन निर्माण कर रहा हूं और निवर्तमान पृष्ठों को वितरित कर रहा हूं, जैसे कि मैं एसएसएल का उपयोग कर रहा हूं, और कुछ वर्षों में http और https ट्रैफ़िक के बीच प्रदर्शन में महत्वपूर्ण अंतर नहीं देखा है।


1

मैं नगनेक्स के लिए दूसरी सिफारिश करता हूं। मेरे अपने परीक्षणों में, यह एक समर्पित एसएसएल ऑफ लोडर के रूप में अच्छी तरह से आयोजित किया गया है।


0

बेशक, यदि एसएसएल प्रसंस्करण कठिन हिट करता है, तो आप इसे हमेशा ऑफ-सर्वर को एक समर्पित बॉक्स में स्थानांतरित कर सकते हैं। यहाँ पर nginx के साथ ऐसा करने का एक अच्छा लेखन है । यह कुछ ऐसा है जो हमने अत्यधिक लोड परत 7 लोड संतुलित सर्वर पर किया है।


0

मैं पुष्टि कर सकता हूं कि शामिल किए गए प्रत्येक तत्व (स्क्रिप्टिंग, नेटवर्क, ...) की तुलना में एन्क्रिप्शन के लिए अतिरिक्त लोड बहुत छोटा है।


0

मेरे अनुभव से सामान्य नियम सीधे संबंधित है कि आपकी सार्वजनिक कुंजी कितनी बड़ी है (जैसे 2048, बनाम 4096, बनाम 8192) सभी में काफी लंबा समय लगता है। हालाँकि मैं डेस्कटॉप वातावरण में अंतर को मुश्किल से देख सकता हूँ, लेकिन मोबाइल वह है जहाँ आप एक अंतर देखते हैं क्योंकि यह कंप्यूटिंग शक्ति लेता है।

सामान्य तौर पर यह दुर्भाग्यपूर्ण है, लेकिन एसएसएल के पास हमेशा होता है और हमेशा एक बड़ा प्रदर्शन जुर्माना लगेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.