2009-11-13 14 views
6

में एसएसएल धीमापन हमने ईसी 2 में हमारे रेल ऐप को तैनात किया है। हमारे सेटअप में, हमारे पास राउंड-रॉबिन DNS के पीछे छोटे उदाहरणों पर दो प्रॉक्सी हैं। ये वेब सर्वर के गतिशील रूप से बढ़ते और घटते खेत के लिए nginx लोड बैलेंसर्स चलाते हैं। प्रत्येक वेब सर्वर भी mongrels के समूह के साथ nginx चलाता है। यहां nginx स्थिर सामग्री का ख्याल रखता है और mongrels संतुलन लोड लोड।ईसी 2

वैसे भी, हमारे यातायात द्वारा बड़े पैमाने पर HTTPS है। हमारे पास एसएसएल की देखभाल करने वाले 2 प्रॉक्सी हैं। मैंने देखा है कि उन उदाहरणों पर हमारा नेटवर्क थ्रूपुट केवल 60 एमबीपीएस या उससे भी कम हो जाता है। इसके विपरीत, परीक्षण में मैं लगातार HTTP के माध्यम से एक छोटे से उदाहरण पर 700+ एमबीपीएस प्राप्त करने में सक्षम हूं। असल में, यह वही है जो मुझे एक बड़े उदाहरण पर मिल सकता है। राइट स्केल लोगों को their testing में क्या मिला है। (अमेज़ॅन का कहना है कि एक छोटे से "मध्यम" नेटवर्क I/O प्राप्त होता है, जबकि एक बड़ा "उच्च" हो जाता है। अगर मुझे अनुमान लगाया गया था, तो मुझे लगता है कि यह सिर्फ यह कहने का उनका तरीका है कि प्रति भौतिक बॉक्स साझा करने के लिए एक छोटे से उदाहरण हैं एक नेटवर्क कार्ड मुझे यकीन नहीं है कि इसका मतलब है कि एक बड़ा समर्पित नेटवर्क इंटरफ़ेस प्राप्त करता है, लेकिन मुझे शक होगा।)

परीक्षण में, मैं लगभग 250 एमबीपीएस एसएसएल प्राप्त करने के लिए एक बड़ा उदाहरण प्राप्त करने में सक्षम था। यह मुझे बताता है कि सीपीयू या कुछ अन्य संसाधन बाधा है। हालांकि, हमारे निगरानी ग्राफ हमारे प्रॉक्सी पर विशेष रूप से व्यस्त होने पर सीपीयू नहीं दिखाते हैं।

मेरे प्रश्न हैं:

  1. एसएसएल सही सीपीयू को धीमी कारण किया जा रहा है और हमारे निगरानी रेखांकन गलत हैं के बारे में मेरी वृत्ति है? या कुछ अन्य संसाधन सीमित कारक हो सकता है?
  2. क्या हमें अतिरिक्त लागत लेनी चाहिए और प्रॉक्सी को उच्च-सीपीयू उदाहरणों पर रखना चाहिए? या यह बेहतर होगा कि बस थोड़ा और उदाहरण जोड़ें?
  3. क्या हमें वेब सर्वर पर एसएसएल समाप्ति को ऑफ़लोड करना चाहिए? यह एक और समस्या पेश करता है, हालांकि: हम अपने आवेदन में क्लाइंट आईपी पता कैसे प्राप्त करते हैं? अभी हमारे प्रॉक्सी इसे एक्स-फॉरवर्ड-हेडर में सेट करता है, लेकिन स्पष्ट रूप से यह संभव नहीं होगा यदि यह SSL को डिक्रिप्ट नहीं कर रहा है।

मुझे किसी भी समान सेटअप के बारे में सुनना अच्छा लगेगा। हमने अपने लोचदार लोड बैलेंसर के साथ थोड़ा सा झुकाया, लेकिन मुझे लगता है कि मूल रूप से हमें उसी स्थिति में ऊपर # 3 के रूप में रखा जाता है। क्या किसी और ने ईएलबी पर स्विच किया है और इसे लायक माना है?

उत्तर

4

आप SSL सत्र कैश कि nginx प्रदान करता है का उपयोग कर रहे हैं? यह एन्क्रिप्शन को फिर से काम करने के चक्रों पर nginx बचाने में मदद कर सकता है। देखें http://wiki.nginx.org/NginxHttpSslModule#ssl_session_cache

क्या निगरानी आप अपने CPU उपयोग निर्धारित करने के लिए प्रयोग कर रहे हैं? एसएसएल आमतौर पर बहुत सीपीयू गहन है।

मैं, इस तरह आप अन्य चिंताओं से अलग से बातचीत कर रहा ssl की लागत पैमाने पर कर सकते हैं एक नामित परत के रूप में एसएसएल प्रॉक्सी बनाए रखेगा।

-2

एसएसएल धीमा हो रहा है: - सच है, तो HTTPSSL का कोई सामान्य HTTP अनुरोध धीमा हो जाएगा।

स्थानीय लैन पर एक समान सेटअप बनाने का प्रयास करें, जहां आपके पास 3 mongrel_clust, और 2 वेबसर्वर हैं। और 5k अनुरोध भेजने के साथ, कर्ल लोडर का उपयोग करके जांचें।

यदि सब कुछ ठीक है, तो यह बहुत अच्छा है। हो सकता है कि आप ईसी 2 लोगों के साथ कड़ी मेहनत कर सकें।

0

मैं अपाचे पर एसएसएल का उपयोग कर रहा हूं, जो छोटे विंडोज ईसी 2 इंस्टेंस पर हमारे सबवर्जन रेपॉजिटरी तक पहुंच को संभालता है। परीक्षण में, मैंने पाया कि एचटीटीपीएस एक्सेस HTTP की तुलना में आंशिक रूप से धीमी थी, लेकिन यह स्पष्ट कारण है कि एन्क्रिप्शन/डिक्रिप्शन एक तात्कालिक प्रक्रिया नहीं है, जैसा कि आप उम्मीद करेंगे।

यदि आपके सीपीयू मेट्रिक्स सही हैं और आप अत्यधिक भार नहीं देख रहे हैं, तो निहितार्थ यह है कि बैंडविड्थ सीमित कारक है; हालांकि, मैं वास्तव में नहीं देख सकता कि आप एचटीटीपीएस उदाहरण पर केवल 60 एमबीपीएस की तुलना में HTTP उदाहरण पर 700+ एमबीपीएस क्यों प्राप्त कर पाएंगे। जब तक कि परीक्षण की स्थिति वास्तव में समान नहीं थी, निश्चित रूप से, और HTTPS इंस्टेंस के अंदर कुछ और चल रहा है, जिसमें आपने फ़ैक्टर नहीं किया है ...

बड़ा उदाहरण हैं निश्चित रूप से कर स्मॉल्स से मेजबान बैंडविड्थ की एक बेहतर हिस्सा मिलता है - उनमें से कम संसाधन के लिए प्रतिस्पर्धा कर रहे हैं। के बाद से आंतरिक EC2 नेटवर्क ईथरनेट, एक बड़े उदाहरण पर 700Mbps देखकर यह सोचते ही नोड पर कोई अन्य बड़े उदाहरणों समान बैंडविड्थ की मांग कर रहे थे संभव है। इसे एक छोटे से उदाहरण से बाहर निकालने के लिए, आपको बहुत ही हल्के ढंग से लोड किए गए होस्ट के अंदर दौड़ने के लिए वास्तव में भाग्यशाली होना होगा। और उस स्थिति में, इस बात की कोई गारंटी नहीं होगी कि आप उस प्रदर्शन स्तर को बनाए रखेंगे - जैसे ही अन्य स्मॉल ऑनलाइन आएंगे, उपलब्ध बैंडविड्थ का आपका हिस्सा ड्रॉप करना शुरू हो जाएगा।

मुझे लगता है कि यह अनिवार्य रूप से एक छोटे उदाहरण बैंडविड्थ मुद्दा है - अधिक स्मॉल्स जोड़ने जरूरी ज्यादा मदद नहीं करेगा, आप वे क्या मेजबान स्पिन-अप पर पर कोई नियंत्रण नहीं है क्योंकि; हालांकि, बड़े उदाहरण बैंडविड्थ पाई का एक बड़ा टुकड़ा प्राप्त करते हैं और इसलिए अधिक स्थिर क्षमता उपलब्धता होने की संभावना है।