http ให้มีชีวิตอยู่ในยุคใหม่


92

ดังนั้นตามที่ผู้เขียน haproxy ผู้ที่รู้เรื่อง http:

Keep-alive ถูกคิดค้นขึ้นเพื่อลดการใช้งาน CPU บนเซิร์ฟเวอร์เมื่อ CPU ช้าลง 100 เท่า แต่สิ่งที่ไม่ได้กล่าวคือการเชื่อมต่อแบบต่อเนื่องใช้หน่วยความจำจำนวนมากในขณะที่ไม่มีใครใช้งานได้ยกเว้นลูกค้าที่เปิดใช้งาน ปัจจุบันในปี 2009 ซีพียูมีราคาถูกมากและหน่วยความจำยังคง จำกัด อยู่ที่สถาปัตยกรรมหรือราคาเพียงไม่กี่กิกะไบต์ หากไซต์ต้องการให้มีชีวิตอยู่แสดงว่ามีปัญหาอย่างแท้จริง ไซต์ที่มีการโหลดสูงมักจะปิดการใช้งาน Keep-alive เพื่อรองรับจำนวนไคลเอ็นต์พร้อมกันสูงสุด ข้อเสียที่แท้จริงของการไม่มี Keep-alive คือเวลาแฝงที่เพิ่มขึ้นเล็กน้อยในการดึงวัตถุ เบราว์เซอร์เพิ่มจำนวนการเชื่อมต่อพร้อมกันเป็นสองเท่าบนไซต์ที่ไม่ได้เก็บรักษาไว้เพื่อชดเชยสิ่งนี้

(จากhttp://haproxy.1wt.eu/ )

สิ่งนี้สอดคล้องกับประสบการณ์ของคนอื่น ๆ หรือไม่? คือไม่มีชีวิต - ตอนนี้ผลลัพธ์แทบไม่เป็นที่สังเกตหรือไม่? (เป็นที่น่าสังเกตว่าด้วย websockets ฯลฯ - การเชื่อมต่อจะยังคง "เปิด" ไม่ว่าจะอยู่ในสถานะใดก็ตาม - สำหรับแอปที่ตอบสนองได้ดีมาก) มีผลมากกว่าสำหรับผู้ที่อยู่ห่างไกลจากเซิร์ฟเวอร์หรือหากมีสิ่งประดิษฐ์จำนวนมากที่จะโหลดจากโฮสต์เดียวกันเมื่อโหลดหน้าเว็บ (ฉันคิดว่าสิ่งต่างๆเช่น CSS, รูปภาพและ JS มาจาก CDN ที่เป็นมิตรกับแคชมากขึ้นเรื่อย ๆ )

ความคิด?

(ไม่แน่ใจว่านี่คือสิ่งที่ serverfault.com หรือไม่ แต่ฉันจะไม่ข้ามโพสต์จนกว่าจะมีคนบอกให้ย้ายไปที่นั่น)


1
เป็นที่น่าสังเกตว่าที่อื่น ๆ ในเอกสารสำหรับ haproxy ที่มีการกล่าวถึงการมีชีวิตอยู่นั้นมีการกล่าวถึงในแง่อื่น ๆ ที่ดีกว่า ฉันชอบที่จะได้ยินเกี่ยวกับประสบการณ์ของผู้คนโดยเฉพาะอย่างยิ่งสำหรับการโฮสต์จำนวนมาก
Michael Neale

"รับเว็บ / แอปพลิเคชันเซิร์ฟเวอร์ที่ออกแบบมาดีขึ้น"? :-) การออกแบบที่ใหม่กว่า (เช่น Jetty) พร้อมการจัดการการเชื่อมต่อแบบต่อเนื่อง (-like) ช่วยลดปัญหาหน่วยความจำ / เธรดเป็นหลัก นอกจากนี้ "ไม่กี่ GB" จะดูเหมือนข้อกำหนดของเซิร์ฟเวอร์ 2008/2009 ;-)

3
ดูเหมือนว่าฉันจะกระตุก RTT พิเศษที่เกี่ยวข้องกับการตั้งค่าซ็อกเก็ตใหม่เป็นขีด จำกัด ทางกายภาพที่ยากซึ่งมักจะนานพอที่มนุษย์จะตรวจจับได้และไม่สามารถลดลงได้ภายใต้กฎฟิสิกส์ที่รู้จักกัน ในทางกลับกัน RAM มีราคาถูกเริ่มถูกลงและไม่มีเหตุผลที่ซ็อกเก็ตที่ไม่ได้ใช้งานจะใช้มากกว่าสองสามกิโลไบต์
Will Dean

2
แต่สิ่งที่น่าสนใจคือนี่ไม่ใช่แค่ทฤษฎี - นี่คือผู้เขียน haproxy อย่างอื่นที่ฉันได้ยินคือทฤษฎีและสมมติฐาน
Michael Neale

คำตอบ:


142

เฮ้เนื่องจากฉันเป็นผู้เขียนการอ้างอิงนี้ฉันจะตอบกลับ :-)

มีสองประเด็นใหญ่ในไซต์ขนาดใหญ่: การเชื่อมต่อพร้อมกันและเวลาในการตอบสนอง การเชื่อมต่อพร้อมกันเกิดจากไคลเอนต์ที่ช้าซึ่งใช้เวลานานในการดาวน์โหลดเนื้อหาและโดยสถานะการเชื่อมต่อที่ไม่ได้ใช้งาน สถานะการเชื่อมต่อที่ไม่ได้ใช้งานเหล่านี้เกิดจากการใช้การเชื่อมต่อซ้ำเพื่อดึงข้อมูลหลาย ๆ วัตถุหรือที่เรียกว่า keep-alive ซึ่งจะเพิ่มขึ้นตามเวลาแฝง เมื่อไคลเอนต์อยู่ใกล้กับเซิร์ฟเวอร์มากก็สามารถใช้การเชื่อมต่อได้อย่างเข้มข้นและมั่นใจได้ว่าแทบจะไม่มีการใช้งานเลย อย่างไรก็ตามเมื่อลำดับสิ้นสุดลงไม่มีใครสนใจที่จะปิดช่องอย่างรวดเร็วและการเชื่อมต่อยังคงเปิดอยู่และไม่ได้ใช้งานเป็นเวลานาน นั่นเป็นเหตุผลว่าทำไมหลาย ๆ คนจึงแนะนำให้ใช้ระยะเวลาการรักษาชีวิตที่ต่ำมาก ในบางเซิร์ฟเวอร์เช่น Apache ระยะหมดเวลาต่ำสุดที่คุณสามารถตั้งได้คือหนึ่งวินาทีและมักจะมากเกินไปที่จะรองรับการโหลดสูง: หากคุณมีไคลเอนต์ 20000 รายต่อหน้าคุณและพวกเขาดึงข้อมูลโดยเฉลี่ยหนึ่งออบเจ็กต์ทุก ๆ วินาทีคุณจะมีการเชื่อมต่อ 20000 เหล่านั้นอย่างถาวร การเชื่อมต่อพร้อมกัน 20,000 ครั้งบนเซิร์ฟเวอร์เอนกประสงค์เช่น Apache นั้นมีขนาดใหญ่มากโดยจะต้องใช้ RAM ระหว่าง 32 ถึง 64 GB ขึ้นอยู่กับโมดูลที่โหลดและคุณอาจไม่หวังว่าจะสูงขึ้นมากแม้จะเพิ่ม RAM ในทางปฏิบัติสำหรับไคลเอนต์ 20000 คุณอาจเห็นการเชื่อมต่อพร้อมกัน 40000 ถึง 60000 บนเซิร์ฟเวอร์เนื่องจากเบราว์เซอร์จะพยายามตั้งค่าการเชื่อมต่อ 2 ถึง 3 รายการหากมีวัตถุจำนวนมากที่จะดึงข้อมูล และคุณอาจไม่หวังว่าจะสูงขึ้นมากแม้จะเพิ่ม RAM ในทางปฏิบัติสำหรับไคลเอนต์ 20000 คุณอาจเห็นการเชื่อมต่อพร้อมกัน 40000 ถึง 60000 บนเซิร์ฟเวอร์เนื่องจากเบราว์เซอร์จะพยายามตั้งค่าการเชื่อมต่อ 2 ถึง 3 รายการหากมีวัตถุจำนวนมากที่จะดึงข้อมูล และคุณอาจไม่หวังว่าจะสูงขึ้นมากแม้จะเพิ่ม RAM ในทางปฏิบัติสำหรับไคลเอนต์ 20000 คุณอาจเห็นการเชื่อมต่อพร้อมกัน 40000 ถึง 60000 บนเซิร์ฟเวอร์เนื่องจากเบราว์เซอร์จะพยายามตั้งค่าการเชื่อมต่อ 2 ถึง 3 รายการหากมีวัตถุจำนวนมากที่จะดึงข้อมูล

หากคุณปิดการเชื่อมต่อหลังจากแต่ละออบเจ็กต์จำนวนการเชื่อมต่อพร้อมกันจะลดลงอย่างมาก อันที่จริงมันจะลดลงตามปัจจัยที่สอดคล้องกับเวลาเฉลี่ยในการดาวน์โหลดวัตถุตามเวลาระหว่างวัตถุ หากคุณต้องการ 50 ms ในการดาวน์โหลดวัตถุ (ภาพถ่ายขนาดเล็กปุ่ม ฯลฯ ... ) และคุณดาวน์โหลดโดยเฉลี่ย 1 วัตถุต่อวินาทีดังที่กล่าวมาข้างต้นคุณจะมีการเชื่อมต่อเพียง 0.05 ต่อไคลเอนต์ซึ่งมีเพียง 1,000 การเชื่อมต่อพร้อมกันสำหรับ 20000 ไคลเอนต์

ตอนนี้เวลาในการสร้างการเชื่อมต่อใหม่กำลังจะถูกนับ ไคลเอนต์ระยะไกลจะพบกับความล่าช้าที่ไม่พึงประสงค์ ในอดีตเบราว์เซอร์เคยใช้การเชื่อมต่อพร้อมกันจำนวนมากเมื่อปิดใช้งาน Keep-alive ฉันจำตัวเลข 4 ตัวใน MSIE และ 8 บน Netscape ได้ สิ่งนี้จะแบ่งเวลาแฝงเฉลี่ยต่อวัตถุได้มากขนาดนั้น ขณะนี้การรักษาชีวิตมีอยู่ทุกหนทุกแห่งเราไม่เห็นตัวเลขที่สูงขนาดนั้นอีกต่อไปเพราะการทำเช่นนี้จะเพิ่มภาระบนเซิร์ฟเวอร์ระยะไกลและเบราว์เซอร์จะดูแลปกป้องโครงสร้างพื้นฐานของอินเทอร์เน็ต

ซึ่งหมายความว่าด้วยเบราว์เซอร์ในปัจจุบันการได้รับบริการที่ไม่มีการรักษาชีวิตจะตอบสนองได้ดีกว่าบริการที่ยังคงมีชีวิตอยู่ นอกจากนี้เบราว์เซอร์บางตัว (เช่น Opera) ใช้การวิเคราะห์พฤติกรรมเพื่อพยายามใช้ pipelinining การไปป์ไลน์เป็นวิธีที่มีประสิทธิภาพในการใช้ Keep-alive เพราะเกือบจะกำจัดเวลาแฝงด้วยการส่งคำขอหลายครั้งโดยไม่ต้องรอการตอบกลับ ฉันได้ลองใช้กับหน้าเว็บที่มีรูปภาพขนาดเล็ก 100 รูปและการเข้าถึงครั้งแรกเร็วกว่าปกติประมาณสองเท่า แต่การเข้าถึงครั้งต่อไปเร็วกว่าประมาณ 8 เท่าเนื่องจากการตอบกลับมีขนาดเล็กมากจนนับเฉพาะเวลาแฝง (เท่านั้น "304" คำตอบ)

ฉันจะบอกว่าตามหลักการแล้วเราควรมี Tunables บางอย่างในเบราว์เซอร์เพื่อให้การเชื่อมต่อมีชีวิตอยู่ระหว่างวัตถุที่ดึงมาและวางลงทันทีเมื่อหน้าเสร็จสมบูรณ์ แต่เราไม่เห็นว่าน่าเสียดาย

ด้วยเหตุนี้ไซต์บางแห่งที่จำเป็นต้องติดตั้งเซิร์ฟเวอร์สำหรับวัตถุประสงค์ทั่วไปเช่น Apache ที่ด้านหน้าและต้องรองรับไคลเอนต์จำนวนมากโดยทั่วไปจะต้องปิดการใช้งาน Keep-alive และเพื่อบังคับให้เบราว์เซอร์เพิ่มจำนวนการเชื่อมต่อพวกเขาใช้ชื่อโดเมนหลายชื่อเพื่อให้การดาวน์โหลดสามารถขนานกันได้ เป็นปัญหาโดยเฉพาะอย่างยิ่งในไซต์ที่ใช้ SSL อย่างเข้มข้นเนื่องจากการตั้งค่าการเชื่อมต่อจะสูงขึ้นเนื่องจากมีการเดินทางไปกลับเพิ่มเติมอีกหนึ่งครั้ง

สิ่งที่สังเกตได้บ่อยกว่าในปัจจุบันคือไซต์ดังกล่าวชอบติดตั้งส่วนหน้าแบบเบาเช่น haproxy หรือ nginx ซึ่งไม่มีปัญหาในการจัดการการเชื่อมต่อพร้อมกันนับสิบถึงหลายแสนครั้งพวกเขาเปิดใช้งาน Keep-alive บนฝั่งไคลเอ็นต์และปิดการใช้งานบน ด้าน Apache ในด้านนี้ค่าใช้จ่ายในการสร้างการเชื่อมต่อแทบจะเป็นค่าว่างในแง่ของ CPU และไม่สามารถสังเกตได้เลยในแง่ของเวลา ด้วยวิธีนี้จะให้สิ่งที่ดีที่สุดสำหรับทั้งสองโลก: เวลาแฝงที่ต่ำเนื่องจากการรักษาชีวิตด้วยระยะหมดเวลาที่ต่ำมากในฝั่งไคลเอ็นต์และจำนวนการเชื่อมต่อที่ต่ำในฝั่งเซิร์ฟเวอร์ ทุกคนมีความสุข :-)

ผลิตภัณฑ์เชิงพาณิชย์บางอย่างปรับปรุงสิ่งนี้เพิ่มเติมโดยใช้การเชื่อมต่อระหว่างตัวโหลดบาลานซ์ด้านหน้าและเซิร์ฟเวอร์ซ้ำและการเชื่อมต่อไคลเอ็นต์ทั้งหมดผ่านทางมัลติเพล็กซ์ เมื่อเซิร์ฟเวอร์อยู่ใกล้กับ LB การได้รับจะไม่สูงกว่าโซลูชันก่อนหน้ามากนัก แต่มักจะต้องมีการปรับเปลี่ยนแอปพลิเคชันเพื่อให้แน่ใจว่าไม่มีความเสี่ยงที่เซสชันจะข้ามระหว่างผู้ใช้เนื่องจากการแชร์การเชื่อมต่อระหว่างผู้ใช้หลายคนโดยไม่คาดคิด . ในทางทฤษฎีสิ่งนี้ไม่ควรเกิดขึ้น ความเป็นจริงมันแตกต่างกันมาก :-)


1
ขอบคุณสำหรับคำตอบที่ครบถ้วนและครอบคลุม! ฉันรู้สึกสับสนเล็กน้อยกับความคิดเห็นต่างๆในหน้าเกี่ยวกับการมีชีวิตอยู่ - แต่ทั้งหมดนี้สมเหตุสมผล
Michael Neale

ที่น่าสนใจ - ฉันสังเกตเห็น Chrome บน linux ใช้การเชื่อมต่อที่ยังมีชีวิตอยู่ซ้ำในเวลาไม่กี่วินาทีนั่นคือเวลาที่ใช้ในการเปิดแท็บอื่นแท็บอื่นนี้เป็นชื่อโฮสต์ที่แตกต่างกัน แต่แก้ไขผ่าน DNS wildcard ไปยังเซิร์ฟเวอร์เดียวกัน (มวล โฮสติ้งเสมือน) - และนำการเชื่อมต่อเดิมกลับมาใช้ใหม่! (สิ่งนี้ทำให้ฉันแปลกใจไม่ใช่การจัดเรียงที่ดี - เห็นได้ชัดว่าถ้าการมีชีวิตอยู่เป็นเพียงด้านลูกค้าก็ใช้ได้)
Michael Neale

ทั้งหมดที่ฉันได้ยินคือ "ใช้อะไรก็ได้ที่ไม่ใช่ apache และไม่ใช่เรื่องใหญ่" สิ่งที่ฉันคาดการณ์คือ "ปิดใช้งาน mod_php และผู้โดยสารแล้วแม้แต่ apache ก็อาจมีโอกาสต่อสู้"
coolaj86

@ CoolAJ86: ประเด็นคือไม่ต้องทุบ Apache อย่างแน่นอนและฉันใช้มันเป็นการส่วนตัว ประเด็นก็คือยิ่งเซิร์ฟเวอร์ทั่วไปมากเท่าไหร่ตัวเลือกที่น้อยที่สุดที่คุณต้องปรับขนาด บางโมดูลจำเป็นต้องใช้โมเดลก่อนส้อมดังนั้นคุณจึงไม่สามารถปรับขนาดการเชื่อมต่อจำนวนมากได้ แต่อย่างที่อธิบายไว้มันไม่ใช่เรื่องใหญ่เพราะคุณสามารถรวมเข้ากับส่วนประกอบฟรีอื่น ๆ เช่น haproxy ทำไมทุกคนถึงแทนที่ทุกอย่างในกรณีนี้? ติดตั้ง haproxy ได้ดีกว่าการติดตั้งแอปพลิเคชันของคุณใหม่โดยใช้เซิร์ฟเวอร์อื่น!
Willy Tarreau

22

ในช่วงหลายปีที่ผ่านมา (และโพสต์ที่นี่ใน stackoverflow) ตอนนี้เรามีเซิร์ฟเวอร์เช่น nginx ซึ่งได้รับความนิยมเพิ่มขึ้น

ตัวอย่างเช่น nginx สามารถเปิดการเชื่อมต่อแบบ keep-alive 10,000 รายการในกระบวนการเดียวโดยมี RAM เพียง 2.5 MB (เมกะไบต์) ในความเป็นจริงมันเป็นเรื่องง่ายที่จะเปิดการเชื่อมต่อหลายพันครั้งโดยใช้ RAM น้อยมากและขีด จำกัด เดียวที่คุณจะได้รับคือขีด จำกัด อื่น ๆ เช่นจำนวนที่จัดการไฟล์ที่เปิดอยู่หรือการเชื่อมต่อ TCP

Keep-alive เป็นปัญหาไม่ได้เกิดจากปัญหาใด ๆ กับข้อมูลจำเพาะของ Keep-alive แต่เป็นเพราะรูปแบบการปรับขนาดตามกระบวนการของ Apache และ Keep-Alives ที่แฮ็กเข้าสู่เซิร์ฟเวอร์ที่สถาปัตยกรรมไม่ได้ออกแบบมาเพื่อรองรับ

ปัญหาโดยเฉพาะอย่างยิ่งคือ Apache Prefork + mod_php + keep-alives นี่คือรูปแบบที่การเชื่อมต่อทุกครั้งจะยังคงใช้ RAM ทั้งหมดที่กระบวนการ PHP ใช้อยู่แม้ว่าจะไม่มีการใช้งานโดยสมบูรณ์และยังคงเปิดอยู่เท่านั้น ซึ่งไม่สามารถปรับขนาดได้ แต่เซิร์ฟเวอร์ไม่จำเป็นต้องได้รับการออกแบบด้วยวิธีนี้ - ไม่มีเหตุผลใดที่เซิร์ฟเวอร์จำเป็นต้องเก็บการเชื่อมต่อทุกครั้งไว้ในกระบวนการแยกกัน (โดยเฉพาะอย่างยิ่งไม่ใช่เมื่อทุกกระบวนการดังกล่าวมีตัวแปล PHP เต็มรูปแบบ) PHP-FPM และรูปแบบการประมวลผลเซิร์ฟเวอร์ตามเหตุการณ์เช่นใน nginx ช่วยแก้ปัญหาได้อย่างสวยงาม

อัปเดต 2015:

SPDY และ HTTP / 2 แทนที่ฟังก์ชันการรักษาชีวิตของ HTTP ด้วยสิ่งที่ดียิ่งขึ้น: ความสามารถไม่เพียง แต่ในการรักษาการเชื่อมต่อและส่งคำขอและการตอบกลับหลายรายการ แต่สำหรับพวกเขาที่จะเป็นมัลติเพล็กซ์ดังนั้นการตอบกลับสามารถส่งในลำดับใดก็ได้ และควบคู่กันไปแทนที่จะเป็นตามลำดับที่ร้องขอเท่านั้น วิธีนี้จะป้องกันการตอบสนองที่ช้าบล็อกการตอบสนองที่เร็วกว่าและขจัดสิ่งล่อใจสำหรับเบราว์เซอร์ที่จะเปิดการเชื่อมต่อแบบขนานหลายรายการไปยังเซิร์ฟเวอร์เดียว เทคโนโลยีเหล่านี้ยังเน้นย้ำถึงความไม่เพียงพอของวิธีการ mod_php และประโยชน์ของบางสิ่งเช่นเว็บเซิร์ฟเวอร์ตามเหตุการณ์ (หรืออย่างน้อยที่สุดก็คือมัลติเธรด) ควบคู่ไปกับสิ่งต่างๆเช่น PHP-FPM


2

ความเข้าใจของฉันคือมันมีส่วนเกี่ยวข้องกับ CPU เพียงเล็กน้อย แต่เวลาแฝงในการเปิดซ็อกเก็ตซ้ำไปอีกด้านหนึ่งของโลก แม้ว่าคุณจะมีแบนด์วิดท์ไม่ จำกัด เวลาแฝงในการเชื่อมต่อจะทำให้กระบวนการทั้งหมดช้าลง ขยายหากเพจของคุณมีวัตถุมากมาย แม้การเชื่อมต่อแบบต่อเนื่องจะมีเวลาแฝงของคำขอ / การตอบกลับ แต่จะลดลงเมื่อคุณมี 2 ซ็อกเก็ตโดยเฉลี่ยแล้วช่องหนึ่งควรสตรีมข้อมูลในขณะที่อีกช่องหนึ่งอาจปิดกั้น นอกจากนี้เราเตอร์จะไม่ถือว่าซ็อกเก็ตเชื่อมต่อก่อนที่จะให้คุณเขียนลงไป ต้องการการจับมือแบบไปกลับเต็มรูปแบบ อีกครั้งฉันไม่ได้อ้างว่าเป็นผู้เชี่ยวชาญ แต่นี่คือสิ่งที่ฉันเห็นมาตลอด สิ่งที่จะเจ๋งจริงๆคือโปรโตคอล ASYNC แบบสมบูรณ์ (ไม่ใช่ไม่ใช่โปรโตคอลที่ป่วยอย่างสมบูรณ์)


ใช่ - นั่นคงเป็นข้อสันนิษฐานของฉัน บางทีมันอาจจะเป็นการแลกเปลี่ยน - มีจุดที่เวลาแฝง (เนื่องจากระยะทาง) หมายความว่ามันเป็นปัญหาจริง
Michael Neale

โอเคตัวพิมพ์สมัยใหม่จะทำให้คุณเชื่อมต่อกับพร็อกซีที่อยู่ใกล้ ๆ (อาจจะ) แต่คุณขยายคำถามไปยังพร็อกซีที่ใช้การเชื่อมต่อแบบถาวรหรือไม่
catchpolenet

@ Michael Neale ด้วยเนื่องจากสิ่งต่างๆเช่น TCP slow-start โทษของเวลาแฝงที่แท้จริงนั้นแย่กว่าที่คุณคาดไว้มาก
MartinodF

บางทีการปิดการซื้อขายอาจเป็นช่วงหมดเวลาที่สั้นกว่ามาก หากคุณร้องขอการสำรองข้อมูลทำไมต้องปิดซ็อกเก็ตแล้วเริ่มใหม่อีกครั้ง แม้แต่ 1 วินาทีก็ยอมให้โหลดหน้าเว็บได้อย่างสมบูรณ์และปิดซ็อกเก็ตทันทีหลังจากนั้น
catchpolenet

2

การเก็บรักษาไว้นานมากจะมีประโยชน์หากคุณใช้ CDN แบบ "ดึงต้นกำเนิด" เช่น CloudFront หรือ CloudFlare ในความเป็นจริงสิ่งนี้สามารถทำงานได้เร็วกว่า CDN แม้ว่าคุณจะให้บริการเนื้อหาแบบไดนามิกก็ตาม

หากคุณมีชีวิตอยู่เป็นเวลานานเพื่อให้แต่ละ PoP มีการเชื่อมต่อแบบถาวรกับเซิร์ฟเวอร์ของคุณในครั้งแรกที่ผู้ใช้เยี่ยมชมไซต์ของคุณพวกเขาสามารถจับมือ TCP ที่รวดเร็วด้วย PoP ในพื้นที่ของตนแทนที่จะจับมือกับคุณช้า (Light ใช้เวลาประมาณ 100 มิลลิวินาทีในการเดินทางไปครึ่งทางทั่วโลกผ่านไฟเบอร์และการสร้างการเชื่อมต่อ TCP ต้องใช้แพ็กเก็ตสามแพ็กเก็ตเพื่อส่งต่อไปมา SSL ต้องการการเดินทางแบบไปกลับสามครั้ง )


1
ฉันถูกล่อลวงให้ +1 แต่ย่อหน้าที่สองของคุณมีคำพูดที่ไม่ถูกต้องเกี่ยวกับแสงนี้ใช้เวลาเพียง 10 มิลลิวินาทีในการเดินทางรอบโลก 10 ms ของความเร็วในการฉีดวัคซีนคือ 3000 กม. และความเร็วไฟ 10 ms ในเส้นใยไม่เกิน 2,000 กม. ครึ่งทางทั่วโลก (ตามพื้นผิว) คือ 20,000 กม. นั่นจะเท่ากับ 100 มิลลิวินาที --- ถ้าเส้นใยของคุณเดินทางโดยตรงจากลอนดอนไปยังซิดนีย์แทนที่จะวนรอบแอฟริกาทางทะเลหรือใช้เส้นทางยาวโดยฮาวาย ...
ปิรามิด

@pyramids คุณพูดถูกไม่ว่าฉันจะพิมพ์ผิดหรือแค่โง่ จะอัพเดต.
mjs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.