วิธีเพิ่มประสิทธิภาพความเร็วในการโหลดของการเชื่อมต่อเริ่มต้นและขั้นตอนการจับมือ SSL ของหน้าเว็บในเครือข่าย 3G?


11

เว็บไซต์ของฉัน www.example.com (เปิดใช้งาน SSL) โฮสต์อยู่บนโฮสต์ที่ใช้ร่วมกันของ Amazon EC2 มันโหลดเร็วขึ้น (โหลดเวลา <2 วินาที) ในการเชื่อมต่อ wifi / บรอดแบนด์ ปัญหาอยู่ในเครือข่าย 3G ในมือถือ ** (โหมด H และไม่ใช่โหมด H +) ** เริ่มขั้นตอนการเชื่อมต่อและกระบวนการจับมือ SSL ใช้เวลานาน - 12 วินาที ตรวจสอบพารามิเตอร์เวลาผ่านแท็บเครือข่าย Chrome ด้านล่างคือเวลาโหลดที่วัดได้สำหรับหน้าเว็บ

โหลดหน้าเว็บสถิติกำหนดเวลาเครือข่าย

ชนิดของข้อมูลที่จัดการในหน้า: หน้า เว็บที่ทดสอบได้รับข้อมูล JSON ที่จับคู่คีย์ - ค่า 5 ผ่าน AJAX และแสดงบนหน้าเว็บ มันเป็นหน้าเบามากที่มีเนื้อหาข้อความเพียง 5-6

ฉันเคยเห็นเว็บไซต์จำนวนมากโหลดเร็วขึ้นบนเครือข่ายมือถือ 3G (โหมด H) เว็บไซต์ของฉันช้าเกินไปในระหว่างขั้นตอนการสร้างการเชื่อมต่อเริ่มต้นบนเครือข่าย 3G ใครช่วยกรุณาช่วยฉันในการแก้ไข / ปรับความล่าช้าในขั้นตอนการเชื่อมต่อเริ่มต้น? การย้ายไปที่การโฮสต์โดยเฉพาะจะช่วยแก้ไขปัญหาปัจจุบันหรือไม่

เว็บเซิร์ฟเวอร์ไม่ว่างและมี CPU และหน่วยความจำจำนวนมากพร้อมใช้งานเสมอ

การกำหนดค่าเซิร์ฟเวอร์: Amazon EC2 อินสแตนซ์ - โฮสติ้งที่ใช้ร่วมกัน (32 CPU และ RAM 60 GB) เว็บเซิร์ฟเวอร์ - Apache SSL - Symantec


คุณได้ลองใช้ตัวโหลดบาลานเซอร์แบบยืดหยุ่นแล้วหรือยังและจัดการกับ HTTPS หรือไม่? นั่นคือสิ่งที่ฉันใช้ที่ Amazon และฉันไม่เห็นปัญหาด้านประสิทธิภาพเช่นนี้ จากนั้นอีกครั้งฉันไม่เคยทดสอบกับการเชื่อมต่อ 3G โดยเฉพาะ
Stephen Ostermiller

ขอบคุณ. เซิร์ฟเวอร์ไม่โหลดสมดุล จะทดสอบเซิร์ฟเวอร์กับพารามิเตอร์บางอย่างอีกครั้งและจะลอง
User234334

คำตอบ:


8

การเชื่อมต่อเริ่มต้น

คุณจะพบว่าการเชื่อมต่อเริ่มต้นรวมถึงการเจรจา SSL ดังนั้นเมื่อ handshake สูงจึงเป็นตัวบ่งชี้ที่ดีว่ามีบางอย่างผิดปกติอย่างมากกับวิธีที่คุณตั้งค่า SSL

Google Chrome: ทำความเข้าใจเกี่ยวกับกำหนดเวลาทรัพยากร

เวลาที่ใช้ในการสร้างการเชื่อมต่อรวมถึง TCP handshakes / retries และเจรจา SSL

SSL Handshake และ TTFB

คุณมีสองประเด็นสำคัญคือเวลาที่ใช้ในการจับมือ SSL และเซิร์ฟเวอร์ที่รอ TTFB (นับจากไบต์แรก)

  • TTFB: 4079ms (ควรน้อยกว่า 1,000 มิลลิวินาที)
  • SSL handshake 11830ms (ควรน้อยกว่า 100ms)

ควรสังเกตว่าเมื่อทำการทดสอบกับอุปกรณ์ 3G / 4G นั้นอาจทำให้เกิดไบต์แรกที่ยาวขึ้นเนื่องจากสัญญาณโทรศัพท์มีความแรงแตกต่างกันไป ... สิ่งนี้อาจทำให้เกิดปัญหาการเชื่อมต่อไม่สม่ำเสมอและเวลาแฝงที่แตกต่างกัน

ขั้นตอนที่ 1: ตรวจสอบปัญหา SSL

เห็นได้ชัดว่าคุณมีปัญหาร้ายแรงเกี่ยวกับ SSL และน่าจะเกิดจากการติดตั้ง OpenSSL ผิดพลาดหรือคล้ายกัน เริ่มต้นด้วยการทดสอบใบรับรอง SSL ของคุณโดยใช้SSL Labsจากนั้นแก้ไขปัญหาหรือคำเตือนที่แนะนำ

หาก SSL ยังทำงานช้าคุณอาจมีเซิร์ฟเวอร์มากเกินไปหรือเซิร์ฟเวอร์เกิดข้อผิดพลาด หากภายหลังคุณจะต้องพยายาม จำกัด ขอบเขตของความผิด ใช้Server Fault stack หากคุณต้องการความช่วยเหลือเพิ่มเติมในเรื่องนี้ผู้ใช้รายหนึ่งรายงานว่าการสร้างคีย์ใหม่ช่วยแก้ไขปัญหา SSL ที่ช้าซึ่งเขา / เธอประสบซึ่งอาจหรืออาจไม่เกี่ยวข้องกัน

ตัวโหลดบาลานซ์สามารถช่วยได้หากเป็นปัญหาทรัพยากรเซิร์ฟเวอร์

ขั้นตอนที่ 2: ตรวจสอบ TTFB

เมื่อคุณตรวจสอบแก้ไขปัญหาของ SSL แล้วและคุณยังมี TTFB เพิ่มขึ้นคุณควรทดสอบเซิร์ฟเวอร์ของคุณโดยตรวจสอบให้แน่ใจว่ามีทรัพยากรเพียงพอ

เวลาไบต์แรกได้รับอิทธิพลจาก แต่ไม่ จำกัด เพียง:

  • ระยะทางจากผู้ใช้ไปยังดาต้าเซ็นเตอร์ที่โฮสต์เซิร์ฟเวอร์สามารถเพิ่ม TTFB
  • GZIP ที่ไม่ได้ใช้งานสามารถเพิ่ม TTFB ได้
  • เครือข่ายแออัดสามารถเพิ่ม TTFB
  • เซิร์ฟเวอร์ที่มีผู้ชมหนาแน่นสามารถเพิ่ม TTFB ได้

บางครั้งการเพิ่ม CPU และ RAM ไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป บางครั้งมันจะดีกว่าที่จะแนะนำload balancerเพราะมันไม่เพียง แต่หมายความว่าคุณสามารถเรียกใช้เซิร์ฟเวอร์หลายตัวพร้อมกันได้อย่างง่ายดาย ผลประโยชน์อื่น ๆ ได้แก่ :

แหล่งที่มา

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

เคล็ดลับในการลด TTFB ของคุณ:

  • ตรวจสอบให้แน่ใจฐานข้อมูลของคุณอยู่ในเครือข่ายเดียวกันหรือมีคุณภาพเมฆ SQL
  • ตรวจสอบให้แน่ใจว่าฐานข้อมูลของคุณอ่านจากหน่วยความจำและไม่เคยมีไฟล์SWAP !
  • ใช้ประโยชน์จากเครือข่ายการจัดส่งเนื้อหามันลดภาระการร้องขอเซิร์ฟเวอร์และงานบีบอัด
  • ใช้ประโยชน์จากVarnish Cacheเพื่อลดภาระในฐานข้อมูลโดยการแคชหน้า
  • เปรียบเทียบไฟล์คงที่ของคุณบนฮาร์ดดิสก์โดยใช้HDParm
  • เปรียบเทียบเซิร์ฟเวอร์ของคุณโดยใช้เครื่องมือเปรียบเทียบเซิร์ฟเวอร์ Apache HTTP
  • เปรียบเทียบกับเว็บไซต์ที่มี 10 รอบด้วยสถานที่ห่างไกลหลายแห่งโดยใช้WebPageTest

ขอบคุณสำหรับคำอธิบายโดยละเอียด จะทดสอบเซิร์ฟเวอร์อีกครั้งตามพารามิเตอร์ที่แนะนำและจะใช้งานได้ดีที่สุด!
User234334

กราฟของคำถามจะแยก SSL handshake ออกจากคำขอเริ่มต้นและ TTFB ตามกราฟนั้นปัญหาเกิดขึ้นจริงกับ SSL ก่อนที่จะทำการร้องขอ
Stephen Ostermiller

@StephenOstermiller เห็นเป็นอย่างดี TTFB ที่รออยู่คือ 4000 มิลลิวินาทีในขณะที่ SSL มีค่ามากกว่า 11000 มิลลิวินาที เป็นไปได้ว่า SSL กำลังส่งผลกระทบกับ TTFB ฉันได้อัปเดตคำถามเพื่อสะท้อนว่า
Simon Hayter

ขอบคุณ! ฉันทดสอบ SSL ของฉันที่ www.ssllabs.com และการให้คะแนนคือ "A" ไม่มีรายงานคำเตือน / ปัญหา ฉันพบว่าเวอร์ชัน Apache คือ 2.2.15 ซึ่งล้าสมัยแล้ว จำเป็นต้องอัปเดตทันที เนื้อหาเว็บไซต์ของฉัน (ขนาดเป็น TB) อยู่ใน / var / www / html / การอัพเดต / การติดตั้ง Apache จะลบเนื้อหาเว็บไซต์ของฉันหรือไม่ มีวิธีใดที่ปลอดภัยที่สุดในการอัพเดตโดยไม่ทำให้ข้อมูลสูญหาย?
User234334

อีกจุดหนึ่ง - OpenSSL ยังเป็นรุ่นล่าสุด
234334

6

อ่านชื่อคำถามของคุณมีสองสิ่งที่คุณสามารถทำได้เพื่อเพิ่มความเร็วในการเชื่อมต่อเริ่มต้นและการจับมือ SSL / TLS สิ่งเหล่านี้ใช้ได้กับการเชื่อมต่อใด ๆ ไม่ใช่แค่ 3G ดังนั้นคุณควรใช้สิ่งเหล่านี้เป็นแนวปฏิบัติที่ดีที่สุด

ก่อนอื่นให้ใช้ HTTP / 2 เพื่อแสดงเว็บไซต์ ต้องใช้ Apache 2.4.17ขึ้นไป

ประการที่สองกำหนดค่า Apache ให้ใช้การเย็บเล่ม OCSP นี้ต้อง Apache 2.3.3 หรือในภายหลังบวก OpenSSL 0.9.8h หรือในภายหลังกับคำแนะนำที่ดีที่จะตั้งขึ้นที่นี่ การเย็บเล่ม OCSP จะไม่เพิ่มความเร็วในการดำเนินการ แต่มันจะทำงานให้กับลูกค้าและทำให้พวกเขามีปัญหาในการพยายามค้นหา OCSP

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

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

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