ฉันรู้ว่ามีคำถามที่คล้ายกันจำนวนมากถูกถามไปแล้ว แต่จนถึงตอนนี้ฉันยังไม่พบวิธีแก้ปัญหาของฉัน
ฉันมีเซิร์ฟเวอร์ลินุกซ์เสมือน (เรียกใช้ Debian Squeeze) ที่ฉันใช้สำหรับการทดสอบความเร็วของเว็บไซต์เพื่อวัดการเพิ่มและลดความเร็วในการโหลดของเว็บไซต์ดังกล่าว ฉันพยายาม จำกัด แบนด์วิดท์และเวลาแฝงของเซิร์ฟเวอร์นี้เพื่อให้สามารถใกล้เคียงกับเวลาในการโหลดในโลกแห่งความเป็นจริงบนเว็บไซต์ แต่ล้มเหลวมาก
สิ่งที่ฉันต้องการเป็นพิเศษคือ:
- เพื่อตั้งค่าเวลาแฝงเข้าและออกจาก 50 ms
- ในการตั้งค่าขีด จำกัด แบนด์วิดท์ที่เข้ามาของ 512 kbps
- หากต้องการตั้งค่าขีด จำกัด แบนด์วิดท์ขาออก 4096 kbps
ฉันอ่าน netem มาแล้วและใช้tc
คำสั่ง แต่ก็ยังอยู่เหนือหัวฉันเล็กน้อย ฉันได้รวบรวมคำสั่งนี้เพื่อควบคุมเวลาในการตอบสนองซึ่งดูเหมือนว่าจะใช้งานได้ แต่ฉันไม่แน่ใจว่ามันจะจัดการกับเวลาแฝงที่ส่งออกหรือทั้งสองอย่าง:
tc qdisc add dev eth0 root netem delay 50ms
ผู้เชี่ยวชาญด้านเครือข่ายใดบ้างที่สามารถช่วยเหลือฉันได้
แก้ไข:
หลังจากการวิจัยเพิ่มเติมฉันได้ครึ่งสู่เป้าหมายของฉันโดยใช้คำสั่งนี้ปริมาณการใช้ข้อมูลขาออกทั้งหมดทำงานตามที่ฉันต้องการ:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
อย่างไรก็ตามฉันยังไม่สามารถเค้นอัตราการเข้าชมอย่างถูกต้องได้ ฉันได้เรียนรู้ว่าฉันควรจะใช้ "Ingress Policer filter" ฉันพยายามทำอย่างนั้นกับคำสั่งด้านล่างเล่นด้วยค่าต่าง ๆ แต่ไม่มีโชค
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop
แบนด์วิดท์จะได้รับผลกระทบจากคำสั่งแม้ว่าค่าข้างต้นจะทำให้ความเร็วเริ่มต้นที่ 2MB / s และในขณะที่การถ่ายโอนดำเนินไปอย่างช้าๆลดลงไปที่ประมาณ 80-90kB / s ซึ่งมาถึงหลังจากถ่ายโอนประมาณ 30 วินาที
มีความคิดเห็นเกี่ยวกับสิ่งที่ฉันทำผิดหรือเปล่า?
netem delay 50ms
ไม่ได้ จำกัด เวลาในการตอบสนอง มันเพิ่มเวลาแฝงโดย50ms
เปรียบเทียบกับสิ่งที่มันเคยเป็น