2015-11-11 3 views
14

मैं क्या मैं प्रदर्शन के मामले में HTTP2 से अपने वेब साइट के लिए प्राप्त कर सकते हैं का मूल्यांकन कर रहा हूँ और अजीब परिणाम हो रही है - यूरोप में साइट अमेरिका से भरी हुई है:क्यों HTTP/2 सादा HTTPS से धीमा है?

    साथ
  • HTTP/2 - 6-7 सेकंड में
  • सादा HTTPS के साथ
  • - 5-6 सेकंड में (लगभग 1 दूसरे तेज)

मैं क्रोम के नेटवर्क पर नजर रखने से कब्जा स्क्रीनशॉट है और इसके साथ की तरह लग रहा HTTP/2 संसाधनों के सबसे एक के बाद एक लोड किए गए हैं सादा एसएसएल के मामले में समानांतर की बजाय एक और।

परीक्षण के लिए मैं अपने वेब एप्लिकेशन को अपाचे 2.4.17 (Win32) द्वारा प्रॉक्सी के रूप में कवर कर रहा हूं (एसएसएल & HTTP/2 प्रोटोकॉल के लिए समर्थन लागू करने के लिए)। क्लाइंट ब्राउज़र विंडोज 7 पर क्रोम 46.0.2490.86 है।

कैप्चर किए गए नेटवर्क अनुरोध नीचे दिए गए हैं। लघु सारांश: 1. मुट्ठी एक - एचटीएमएल पेज 2. अगला समूह - 6 अनुरोध - संसाधन सीधे एचटीएमएल में घोषित किए गए 3. बाकी संसाधन - दस्तावेज़ में स्क्रिप्ट ('स्क्रिप्ट' और 'लिंक/सीएसएस' टैग के माध्यम से गतिशील रूप से जोड़े गए /सिर)।

तस्वीर के बाईं तरफ HTTP/2, दाहिने तरफ - सादे SSL के माध्यम से एक ही कर्मचारी (http2_module बंद है)।

enter image description here


अद्यतन: मैं "कुछ और" क्या रिवर्स प्रॉक्सी के रूप में HTTP/2 का समर्थन करता है परीक्षण किया है। यह nginx 1.9.7.1 किट्टी http://nginx-win.ecsds.eu से है - मूल nginx 'खिड़कियों के लिए' का कांटा। मूल nginx में HTTP/2 केवल in commercial version उपलब्ध है, इसलिए मैं इसे आजमा नहीं सका। और ऐसा लगता है कि विंडोज के लिए HTTP/2 + रिवर्स प्रॉक्सी उपलब्ध कोई अन्य सर्वर कार्यान्वयन नहीं है, या मैं उन्हें नहीं ढूंढ पाया (सूची here और here)।

परिणाम मैं किट्टी के साथ मिल गया है और भी भ्रामक है - अपाचे में जैसे संसाधनों का कोई 'अनुक्रमिक लोड' वहाँ है, लेकिन अंतरण दर दो बार सादा SSL पर की तुलना में HTTP/2 से अधिक धीमी है। अंतिम परिणाम है - HTTP/2 सादा एसएसएल की तुलना में काफी धीमी है। नीचे वे सभी तरफ से हैं।

इन सब में से मैं केवल यह मान सकता हूं कि प्रदर्शन दृढ़ता से कार्यान्वयन पर निर्भर करता है और वर्तमान में उपलब्ध कार्यान्वयन HTTP/2 के बारे में कोई निरंतर निष्कर्ष निकालने के लिए अजीब तरीके से निष्पादित करता है। वहाँ कुछ वर्तमान में उपलब्ध कार्यान्वयन के साथ गलत है HTTP/2 के साथ ही कुछ भी गलत नहीं है, -

enter image description here

+1

प्रतिक्रिया शीर्षलेख क्या कहते हैं? क्या आप बिल्कुल सुनिश्चित हैं कि HTTP/2 भेजने के लिए अपाचे को ठीक से कॉन्फ़िगर किया गया है? एफवाईआई, कुछ ब्राउज़र संस्करण को सही तरीके से प्रदर्शित नहीं कर सकते हैं, https://icing.github.io/mod_h2/howto.html पर एक नज़र डालें। –

+0

क्रोम द्वारा प्रदर्शित प्रतिक्रिया शीर्षलेख मेरे लिए कुछ भी उपयोगी नहीं कहते हैं :(। मुझे बहुत यकीन है कि HTTP/2 वास्तव में 'चालू' है क्योंकि यह एडन (https://chrome.google.com/webstore/detail/http2-and- spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin/related) HTTP/2 आइकन दिखाता है और नेटवर्क व्यवहार सादा एसएसएल के खिलाफ अलग है - केवल एक एसएसएल हैंडशेक किया जाता है। –

+0

@XtraCoder बस devtools नेटवर्क पैनल के शीर्षलेख में दायाँ क्लिक करें, वही आंकड़ा जिसे आपने संलग्न किया है, और "प्रोटोकॉल" कॉलम की तलाश करें। लेकिन यह आंकड़ा से बहुत स्पष्ट है कि पहला आधा HTTP/2 या SPDY का उपयोग कर रहा है। – dsign

उत्तर

3

तो, अंत में मेरा निर्णय है।

  • अपाचे HTTPD 2.4।17/Win32 - कुछ अजीब 'अनुक्रमिक लोड' प्रभाव
  • nginx किट्टी है - प्रदान करता है अजीब तरह से धीमी गति से अंतरण दर
  • आधिकारिक फ्रीवेयर nginx नहीं है http2

लेकिन

  • कस्टम में बनाया मॉड्यूल kevinworthington.com
  • अपाचे HTTPD 2.4.17/लिनक्स से खिड़कियों के लिए निर्मित nginx

दोनों दिखाए गए प्रदर्शन प्रदर्शन। यहां 'प्रश्न' में किए गए एक ही परीक्षण के लिए स्क्रीनशॉट है, लेकिन अपाचे रिवर्स प्रॉक्सी के साथ यहां किसी अन्य व्यक्ति के लिनक्स कंप्यूटर पर होस्ट किया गया है।

enter image description here

0

इस पर एक नज़र डालें, यह Taobao.org से विकसित nginx का एक संशोधित संस्करण है, और AliExpress द्वारा प्रयोग किया जाता है और दूसरों के व्यस्त साइटों की एक बहुत कुछ है। यह बॉक्स के बाहर HTTP2 का समर्थन करता है, और कुछ अन्य सुविधाएं केवल वाणिज्यिक nginx में उपलब्ध हैं, जैसे अपस्ट्रीम नियंत्रण।

http://tengine.taobao.org/

2

हम साथ http/2

nginx version: nginx/1.9.10 
built with OpenSSL 1.0.2e 3 Dec 2015 
TLS SNI support enabled 

हम एक ही अवलोकन किए गए नवीनतम nginx चल रहे हैं। हम $ request_time और $ upstream_time लॉगिंग कर रहे हैं। जबकि upstream_time प्रोटोकॉल की परवाह किए बिना बराबर है, कुल मिलाकर REQUEST_TIME अलग है:

# grep ' 443 ' access.log|grep 'HTTP/1.1'| cut -d ' ' -f 3,4 | awk '{r+=$1; u+=$2} END {print r/NR; print u/NR}' 
0.0116887 # HTTP/1.1 request_time in seconds 
0.00673473 # HTTP/1.1 upstream_time in seconds 

# grep ' 443 ' access.log|grep 'HTTP/2.0'| cut -d ' ' -f 3,4 | awk '{r+=$1; u+=$2} END {print r/NR; print u/NR}' 
0.0363673 # HTTP/2.0 request_time in seconds 
0.00695812 # HTTP/2.0 upstream_time in seconds 

तो http के लिए समग्र अनुरोध समय/1.1 तीन बार बेहतर है! हो सकता है कि कुछ अनुरोध के समय request_time लॉगिंग और http/2 के साथ काम नहीं कर रहा है। मुझे वास्तव में पता नहीं है लेकिन वादा यह था कि http/2 http/1.1 से तेज है यदि दोनों टीएलएस पर चल रहे हैं।

लेकिन मैं आगे की जांच करूंगा।

संबंधित मुद्दे