คำตอบสั้น ๆ คือ: ไม่มีใครสามารถตอบคำถามนี้ได้ยกเว้นคุณ
คำตอบที่ยาวคือการเปรียบเทียบภาระงานเฉพาะของคุณเป็นสิ่งที่คุณต้องทำเองเพราะมันค่อนข้างเหมือนกับถามว่า "สตริงยาวแค่ไหน?"
เว็บไซต์แบบคงที่เดียวที่เรียบง่ายสามารถโฮสต์ใน Pentium Pro 150 และยังคงให้บริการการแสดงผลนับพันทุกวัน
วิธีการพื้นฐานที่คุณต้องใช้เพื่อตอบคำถามนี้คือลองทำดูว่าเกิดอะไรขึ้น มีเครื่องมือมากมายที่คุณสามารถใช้เพื่อทำให้ระบบของคุณดุ้งดิ้งภายใต้ความกดดันเพื่อดูว่าหัวเข็มขัดอยู่ที่ใด
ภาพรวมโดยย่อของสิ่งนี้คือ:
- ใส่สถานการณ์ของคุณในสถานที่
- เพิ่มการตรวจสอบ
- เพิ่มทราฟฟิก
- ประเมินผลลัพธ์
- ให้อภัยตามผลลัพธ์
- ล้างซ้ำจนกว่าจะมีความสุขพอสมควร
ใส่สถานการณ์ของคุณในสถานที่
โดยทั่วไปในการทดสอบโหลดคุณต้องมีสิ่งที่จะทดสอบ ตั้งค่าสภาพแวดล้อมเพื่อทดสอบ นี่ควรจะเป็นการคาดเดาที่ใกล้เคียงกับฮาร์ดแวร์ที่ใช้ในการผลิตของคุณหากเป็นไปได้มิฉะนั้นคุณจะถูกคาดการณ์ข้อมูลของคุณ
ตั้งค่าเซิร์ฟเวอร์บัญชีเว็บไซต์แบนด์วิดท์ ฯลฯ แม้ว่าคุณจะทำสิ่งนี้บน VMs ที่ใช้ได้ตราบใดที่คุณพร้อมที่จะขยายผล
ดังนั้นฉันจะตั้งค่าเครื่องเสมือนกลางกำลัง (สองคอร์, 512 MB RAM, HDD 4 GB) และติดตั้งตัวโหลดบาลานเซอร์ที่ชื่นชอบhaproxy
ภายในRed Hat Linuxบน VM
ฉันจะมีเว็บเซิร์ฟเวอร์สองเครื่องด้านหลัง load balancer ที่ฉันจะใช้เพื่อทดสอบความเครียด load balancer เว็บเซิร์ฟเวอร์ทั้งสองนี้ได้รับการตั้งค่าให้เหมือนกับระบบจริงของฉัน
เพิ่มการตรวจสอบ
คุณจะต้องมีตัวชี้วัดเพื่อตรวจสอบดังนั้นฉันจะวัดจำนวนคำขอผ่านเว็บเซิร์ฟเวอร์ของฉันและจำนวนคำขอที่ฉันสามารถบีบต่อวินาทีก่อนที่ผู้ใช้จะเริ่มได้รับเวลาตอบสนองนานกว่าสองวินาที
ฉันจะตรวจสอบการใช้ RAM, CPU และดิสก์ในhaproxy
อินสแตนซ์เพื่อให้แน่ใจว่าตัวโหลดบาลานซ์สามารถจัดการการเชื่อมต่อได้
วิธีการทำเช่นนี้ขึ้นอยู่กับแพลตฟอร์มของคุณเป็นอย่างมากและอยู่นอกขอบเขตของคำตอบนี้ คุณอาจจำเป็นต้องตรวจสอบไฟล์บันทึกของเว็บเซิร์ฟเวอร์เริ่มเคาน์เตอร์วัดประสิทธิภาพหรือพึ่งพาความสามารถในการรายงานของเครื่องมือทดสอบความเครียดของคุณ
บางสิ่งที่คุณต้องการตรวจสอบเสมอ:
- การใช้งาน CPU
- การใช้ RAM
- การใช้งานดิสก์
- เวลาแฝงของดิสก์
- การใช้งานเครือข่าย
คุณอาจเลือกดูการหยุดชะงักของ SQL ค้นหาเวลา ฯลฯ ขึ้นอยู่กับสิ่งที่คุณทำการทดสอบเป็นพิเศษ
เพิ่มทราฟฟิก
นี่คือสิ่งที่ได้รับความสนุกสนาน ตอนนี้คุณต้องจำลองการทดสอบโหลด มีเครื่องมือมากมายที่สามารถทำได้ด้วยตัวเลือกที่กำหนดค่าได้:
เลือกตัวเลขใดก็ได้ สมมติว่าคุณกำลังจะเห็นว่าระบบตอบสนองอย่างไรกับ 10,000 ครั้งต่อนาที ไม่สำคัญว่าคุณจะเลือกหมายเลขใดเพราะคุณจะทำซ้ำขั้นตอนนี้หลายครั้งปรับตัวเลขขึ้นหรือลงเพื่อดูว่าระบบตอบสนองอย่างไร
ตามหลักการแล้วคุณควรกระจายคำขอ 10,000 รายการเหล่านี้ไปยังไคลเอนต์ / โหนดทดสอบโหลดหลายรายการเพื่อให้ไคลเอนต์เดียวไม่กลายเป็นคอขวดของคำขอ ตัวอย่างเช่นการทดสอบระยะไกลของ JMeter ให้อินเทอร์เฟซกลางที่จะเปิดตัวไคลเอนต์หลายเครื่องจากการควบคุม Jmeter
กดปุ่ม Magic Goและดูเว็บเซิร์ฟเวอร์ของคุณที่จะพังและพัง
ประเมินผลลัพธ์
ดังนั้นตอนนี้คุณต้องย้อนกลับไปที่การวัดของคุณที่รวบรวมไว้ในขั้นตอนที่ 2 คุณจะเห็นว่าการเชื่อมต่อพร้อมกัน 10,000 รายการhaproxy
กล่องของคุณแทบจะไม่เหนื่อย แต่เวลาตอบสนองกับเว็บเซิร์ฟเวอร์สองเครื่องเป็นเวลาห้าวินาที นั่นไม่เจ๋ง - จำไว้ว่าเวลาตอบสนองของคุณตั้งเป้าไว้สองวินาที ดังนั้นเราต้องทำการเปลี่ยนแปลงบางอย่าง
remediate
ตอนนี้คุณต้องเร่งเว็บไซต์ของคุณให้เร็วขึ้นกว่าสองเท่า เพื่อให้คุณรู้ว่าคุณต้องขยายหรือย่อขนาด
หากต้องการขยายขนาดรับเว็บเซิร์ฟเวอร์ที่ใหญ่กว่า RAM มากขึ้นดิสก์ที่เร็วกว่า
เพื่อขยายออกรับเซิร์ฟเวอร์เพิ่ม
ใช้การวัดของคุณจากขั้นตอนที่ 2 และการทดสอบเพื่อทำการตัดสินใจ ตัวอย่างเช่นหากคุณเห็นว่าเวลาแฝงดิสก์มีขนาดใหญ่มากในระหว่างการทดสอบคุณรู้ว่าคุณจำเป็นต้องขยายและรับฮาร์ดไดรฟ์ที่เร็วขึ้น
หากคุณเห็นว่าหน่วยประมวลผลอยู่ที่ 100% ในระหว่างการทดสอบคุณอาจต้องขยายเพื่อเพิ่มเว็บเซิร์ฟเวอร์เพิ่มเติมเพื่อลดแรงกดดันต่อเซิร์ฟเวอร์ที่มีอยู่
ไม่มีคำตอบที่ถูกหรือผิดทั่วไปมีเพียงสิ่งที่เหมาะสมสำหรับคุณ ลองขยายขนาดและหากไม่ได้ผลให้ขยายขนาดแทน หรือไม่ก็แล้วแต่คุณและบางคนคิดนอกกรอบ
สมมติว่าเรากำลังจะขยายออก ดังนั้นฉันตัดสินใจที่จะโคลนเว็บเซิร์ฟเวอร์สองเครื่องของฉัน (เป็น VM) และตอนนี้ฉันมีเว็บเซิร์ฟเวอร์สี่แห่ง
ล้างซ้ำ
เริ่มต้นอีกครั้งจากขั้นตอนที่ 3 หากคุณพบว่าสิ่งต่าง ๆ ไม่เป็นไปตามที่คาดไว้ (ตัวอย่างเช่นเราเพิ่มเว็บเซิร์ฟเวอร์เป็นสองเท่า ตัวอย่างเช่นคุณเพิ่มเว็บเซิร์ฟเวอร์เป็นสองเท่า แต่ยังมีเซิร์ฟเวอร์ฐานข้อมูลที่เส็งเคร็ง หรือคุณโคลน VM เพิ่มเติม แต่เนื่องจากพวกมันอยู่บนโฮสต์ฟิสิคัลเดียวกันคุณจึงได้รับการแย่งชิงกันมากขึ้นสำหรับทรัพยากรเซิร์ฟเวอร์
จากนั้นคุณสามารถใช้ขั้นตอนนี้เพื่อทดสอบส่วนอื่น ๆ ของระบบ แทนการกดปุ่ม balancer โหลดให้ลองกดปุ่มเว็บเซิร์ฟเวอร์โดยตรงหรือเซิร์ฟเวอร์ SQL โดยใช้เครื่องมือ