मैं सामग्री को कैश करने के लिए अपने नेटवर्क पर स्क्वीड का उपयोग करता हूं। मैं एक कमांड लाइन स्विच के साथ क्रोम लॉन्च करता हूं जो इसे प्रॉक्सी का उपयोग करने के लिए कहता है।
अधिकांश भाग के लिए यह काम करता है क्योंकि स्क्वीड बड़ी मात्रा में सामग्री को कैश करता है और सीमित संख्या में उपयोगकर्ताओं के साथ यह ठीक काम करता है।
जब मैं क्रोम का उपयोग करके HTTPS वाली वेबसाइट पर जाता हूं, तो पहला पृष्ठ बहुत धीरे-धीरे लोड होता है। क्रोम पर स्थिति पट्टी "प्रॉक्सी सुरंग की प्रतीक्षा कर रही है ..." कहती है। क्रोम प्रॉक्सी के माध्यम से सुरंग से कनेक्ट क्रिया का उपयोग करता है और सर्वर के साथ HTTPS स्थापित करता है। इसके बाद के पृष्ठ तेज़ हैं क्योंकि Chrome कनेक्शन खुला रखता है।
मैंने अपने स्क्वीड 3 लॉग की जाँच की। यहाँ कुछ कनेक्ट प्रविष्टियाँ हैं। दूसरा कॉलम मिलीसेकंड में प्रतिक्रिया समय है
1416064285.231 2926 192.168.12.10 TCP_MISS/200 0 CONNECT www.google.com:443 - DIRECT/74.125.136.105 -
1416064327.076 49702 192.168.12.10 TCP_MISS/200 1373585 CONNECT r2---sn-q4f7sn7l.googlevideo.com:443 - DIRECT/173.194.141.152 -
1416064345.018 63250 192.168.12.10 TCP_MISS/200 545 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
1416064372.020 63038 192.168.12.10 TCP_MISS/200 1809 CONNECT www.facebook.com:443 - DIRECT/31.13.91.2 -
1416064393.040 64218 192.168.12.10 TCP_MISS/200 25346 CONNECT clients4.google.com:443 - DIRECT/173.194.32.196 -
1416064408.040 63021 192.168.12.10 TCP_MISS/200 545 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
1416064408.040 62515 192.168.12.10 TCP_MISS/200 619 CONNECT ssl.gstatic.com:443 - DIRECT/173.194.32.207 -
1416064427.019 90301 192.168.12.10 TCP_MISS/200 2663948 CONNECT r2---sn-q4f7sn7l.googlevideo.com:443 - DIRECT/173.194.141.152 -
1416064429.019 63395 192.168.12.10 TCP_MISS/200 1339 CONNECT clients6.google.com:443 - DIRECT/173.194.32.195 -
1416064439.015 63382 192.168.12.10 TCP_MISS/200 764 CONNECT talkgadget.google.com:443 - DIRECT/173.194.32.199 -
1416064446.896 170270 192.168.12.10 TCP_MISS/200 2352814 CONNECT r20---sn-q4f7dm7z.googlevideo.com:443 - DIRECT/208.117.252.121 -
1416064471.010 62969 192.168.12.10 TCP_MISS/200 516 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
1416064524.010 63389 192.168.12.10 TCP_MISS/200 764 CONNECT talkgadget.google.com:443 - DIRECT/173.194.32.195 -
1416064534.014 63003 192.168.12.10 TCP_MISS/200 545 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
1416064542.010 63387 192.168.12.10 TCP_MISS/200 2114 CONNECT www.facebook.com:443 - DIRECT/31.13.91.2 -
1416064553.010 63376 192.168.12.10 TCP_MISS/200 470 CONNECT clients4.google.com:443 - DIRECT/173.194.32.194 -
1416064561.010 63379 192.168.12.10 TCP_MISS/200 1807 CONNECT mail.google.com:443 - DIRECT/173.194.32.213 -
1416064597.019 63003 192.168.12.10 TCP_MISS/200 545 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
1416064600.126 0 192.168.12.10 TCP_DENIED/403 3630 CONNECT www.google-analytics.com:443 - NONE/- text/html
1416064610.122 10959 192.168.12.10 TCP_MISS/200 626 CONNECT avatars0.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.129 10968 192.168.12.10 TCP_MISS/200 576 CONNECT avatars1.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.130 10968 192.168.12.10 TCP_MISS/200 628 CONNECT avatars1.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.130 10967 192.168.12.10 TCP_MISS/200 576 CONNECT avatars1.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.133 10972 192.168.12.10 TCP_MISS/200 576 CONNECT avatars1.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.133 10970 192.168.12.10 TCP_MISS/200 627 CONNECT avatars0.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.135 10972 192.168.12.10 TCP_MISS/200 576 CONNECT avatars3.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.135 10972 192.168.12.10 TCP_MISS/200 628 CONNECT avatars2.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.260 11098 192.168.12.10 TCP_MISS/200 574 CONNECT avatars3.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064610.316 11155 192.168.12.10 TCP_MISS/200 1063 CONNECT avatars3.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064611.722 13327 192.168.12.10 TCP_MISS/200 17113 CONNECT github.com:443 - DIRECT/192.30.252.128 -
1416064619.130 19005 192.168.12.10 TCP_MISS/200 141 CONNECT avatars3.githubusercontent.com:443 - DIRECT/185.31.17.133 -
1416064639.016 95397 192.168.12.10 TCP_MISS/200 1037 CONNECT talkgadget.google.com:443 - DIRECT/173.194.32.194 -
1416064643.210 4739 192.168.12.10 TCP_MISS/200 4085 CONNECT dgafology.com:443 - DIRECT/198.74.52.100 -
1416064662.010 64990 192.168.12.10 TCP_MISS/200 545 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
1416064665.219 65086 192.168.12.10 TCP_MISS/200 3851 CONNECT collector.githubapp.com:443 - DIRECT/54.236.179.219 -
1416064685.276 4003 192.168.12.10 TCP_MISS/200 3956 CONNECT qa.sockets.stackexchange.com:443 - DIRECT/198.252.206.25 -
1416064689.142 3750 192.168.12.10 TCP_MISS/200 357 CONNECT qa.sockets.stackexchange.com:443 - DIRECT/198.252.206.25 -
1416064709.014 78381 192.168.12.10 TCP_MISS/200 779 CONNECT clients6.google.com:443 - DIRECT/173.194.32.193 -
1416064721.010 63396 192.168.12.10 TCP_MISS/200 764 CONNECT talkgadget.google.com:443 - DIRECT/173.194.32.193 -
1416064725.013 63001 192.168.12.10 TCP_MISS/200 545 CONNECT mtalk.google.com:5228 - DIRECT/74.125.136.188 -
कुछ कनेक्शन 60000 मिलीसेकंड से अधिक लेते हैं!
यहाँ तुलना के लिए कुछ GET हैं
1416064691.281 68 192.168.12.10 TCP_MISS/200 412 GET http://serverfault.com/questions/ticks? - DIRECT/198.252.206.16 text/plain
1416064693.492 70 192.168.12.10 TCP_MISS/200 309 GET http://serverfault.com/search/titles? - DIRECT/198.252.206.16 application/json
1416064693.548 126 192.168.12.10 TCP_MISS/200 739 GET http://serverfault.com/content/img/progress-dots.gif - DIRECT/198.252.206.16 image/gif
कुल मिलाकर विद्रूप प्रदर्शन उत्कृष्ट है! लेकिन कनेक्ट के लिए यह बहुत धीमा है।
मुझे पता चला कि आप उपयोग कर सकते हैं echo
और nc
कमांड लाइन से एक सुरंग का अनुरोध करने के।
मैंने इस तकनीक का उपयोग करके बैक टू बैक दो कनेक्शन किए
ericu@ericu-desktop:~$ echo -e -n 'CONNECT russiatoday.com:443\r\n\r\n' | nc 192.168.12.95 3127
HTTP/1.0 200 Connection established
ericu@ericu-desktop:~$ echo -e -n 'CONNECT russiatoday.com:443\r\n\r\n' | nc 192.168.12.95 3127
HTTP/1.0 200 Connection established
लॉग में,
1416065033.065 3079 192.168.12.10 TCP_MISS/200 0 CONNECT russiatoday.com:443 - DIRECT/62.213.85.4 -
1416065034.090 208 192.168.12.10 TCP_MISS/200 0 CONNECT russiatoday.com:443 - DIRECT/62.213.85.4 -
पहला कनेक्शन 3079 मिली सेकेंड लिया गया, लेकिन दूसरा केवल 208 था। इसलिए, ऐसा लगता है कि स्क्विड हमेशा धीमा नहीं होता है।
बाद में, मैंने फिर से वही काम किया लेकिन सर्वर tcpdump
से ट्रैफ़िक कैप्चर squid
करने के लिए।
1416070989.180 732 192.168.12.10 TCP_MISS/200 0 CONNECT russiatoday.com:443 - DIRECT/62.213.85.4 -
जैसा कि आप देख सकते हैं कि विलंबता 732ms है।
यहाँ पहले 3 पैकेट के tcpdump कैप्चर से आउटपुट है, SYN
मेरे बॉक्स SYN ACK
से, रिमोट से और ACK
मेरे बॉक्स से। मेरी समझ यह है कि यह कनेक्शन स्थापित करने के लिए आवश्यक 3-तरफा हैंडशेक है
11:03:08.973995 IP 192.168.12.95.34778 > 62.213.85.4.443: Flags [S], seq 1280719736, win 14600, options [mss 1460,sackOK,TS val 605181173 ecr 0,nop,wscale 7], length 0
11:03:09.180753 IP 62.213.85.4.443 > 192.168.12.95.34778: Flags [S.], seq 614920595, ack 1280719737, win 14480, options [mss 1460,sackOK,TS val 1284340103 ecr 605181173,nop,wscale 7], length 0
11:03:09.180781 IP 192.168.12.95.34778 > 62.213.85.4.443: Flags [.], ack 1, win 115, options [nop,nop,TS val 605181225 ecr 1284340103], length 0
उस एक्सचेंज में बीता हुआ समय 206.8 एमएस है। squid
यदि मेरा विश्लेषण सही है तो इस उदाहरण में 526 ms विलंबता है। विलंबता का एक अतिरिक्त ~ 500 एमएस विशाल है।
लेकिन मेरा विश्लेषण त्रुटिपूर्ण हो सकता है क्योंकि मुझे लगता है क्योंकि CONNECT
स्क्वीड में "रिस्पांस टाइम" सिर्फ उस समय को मापता है जब सुरंग को खुला रखा गया था।
मिलीसेकंड में DNS रिज़ॉल्यूशन समय को जोड़ने के logformat
लिए मैंने अपने निर्देश को संपादित किया squid
।
1416072432.918 580 776 192.168.12.10 TCP_MISS/200 0 CONNECT russiatoday.com:443 - DIRECT/62.213.85.4 -
1416072446.823 - 185 192.168.12.10 TCP_MISS/200 0 CONNECT russiatoday.com:443 - DIRECT/62.213.85.4 -
दूसरा कॉलम DNS लुकअप समय है, तीसरा "रिस्पांस टाइम" है, जो इसके लिए ज्यादा मायने नहीं रखता है CONNECT
। के रूप में स्तंभ से पता चलता है -
, क्योंकि squid
आंतरिक DNS कैशिंग है। इसका मतलब यह है कि स्क्वीड ने अपने आंतरिक DNS कैश का उपयोग अगले कनेक्ट के लिए किया। यह पहले पृष्ठ दृश्य को धीमा और बाद में अपेक्षाकृत तेज़ होने के बारे में बताता है। यह अतिरिक्त ~ 500 एमएस विलंबता की भी व्याख्या करता है। मैं स्थानीय होस्ट पर चल रहे bind9 का उपयोग कर रहा हूँ, जो कि ipv4 पर googles DNS को अग्रेषित कर रहा है। एक साधारण DNS लुकअप के लिए मुझे ~ 500ms की विलंबता कैसे मिल रही है?
रनिंग nslookup
सीधे 8.8.8.8 का उपयोग कर और मेरे स्थानीय सर्वर को दरकिनार:
ericu@katz:~$ time nslookup russiatoday.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: russiatoday.com
Address: 62.213.85.4
real 0m0.056s
user 0m0.004s
sys 0m0.008s
यह संपूर्ण लुकअप के लिए 56 ms विलंबता दिखाता है। उस सर्वर को पिंग करना लगभग 50 ms की विलंबता देता है, इसलिए यह समझ में आता है।
तो कुछ के बारे में squid
और bind9
एक दूसरे से सहमत नहीं हैं?
iptables
मेरे इंटरनेट कनेक्शन के लिए NAT + फ़ायरवॉल के रूप में कार्य करता है।
iptables -A chain_name -j ACCEPT
। मेरा मतलब है कि मैं इसे जोड़ सकता हूं, लेकिन मैं यह नहीं देखता कि यह क्यों मायने रखेगा।