สำหรับการทดสอบที่รวดเร็วและสกปรก (เช่นไม่มีการเพิ่มประสิทธิภาพใด ๆ !) ฉันเปิดใช้งานเว็บไซต์เริ่มต้นอย่างง่ายของ Apache apache2 (ซึ่งเพิ่งบอกว่า "ใช้งานได้!") ด้วยทั้ง http และ https (ใบรับรองที่ลงชื่อด้วยตนเอง) บน VM ท้องถิ่น Ubuntu 9.04 และวิ่ง apache มาตรฐาน " ab
" ที่มี 10,000 คำขอ (ไม่มีการทำงานพร้อมกัน) ไคลเอ็นต์และเซิร์ฟเวอร์อยู่บนเครื่อง / VM เดียวกัน:
ผลลัพธ์สำหรับhttp (" ab -n 10000 http://ubuntu904/index.html
")
- ใช้เวลาในการทดสอบ: 2.664วินาที
- คำขอต่อวินาที: 3753.69 (# / วินาที)
- เวลาต่อคำขอ: 0.266ms
ผลลัพธ์สำหรับhttps (" ab -n 10000 https://ubuntu904/index.html
"):
- ใช้เวลาในการทดสอบ: 107.673วินาที
- คำขอต่อวินาที: 92.87 (# / วินาที)
- เวลาต่อคำขอ: 10.767ms
หากคุณมองอย่างใกล้ชิด (เช่นกับ tcpdump หรือ wireshark) ที่การสื่อสาร tcp / ip ของคำขอเดียวคุณจะเห็นว่ากรณี http ต้องใช้ 10 แพ็กเก็ตระหว่างไคลเอนต์และเซิร์ฟเวอร์ในขณะที่ https ต้องการ 16: เวลาแฝงสูงกว่ามาก (เพิ่มเติมเกี่ยวกับความสำคัญของความล่าช้าที่นี่ )
การเพิ่ม keep-alive ( ab
ตัวเลือก-k
) ลงในการทดสอบช่วยปรับปรุงสถานการณ์เพราะตอนนี้คำขอทั้งหมดแชร์การเชื่อมต่อเดียวกันนั่นคือค่าโสหุ้ย SSL ต่ำกว่า แต่ https ก็ยังวัดได้ช้ากว่า:
ผลลัพธ์สำหรับhttpพร้อมแบบ keep-alive (" ab -k -n 10000 http://ubuntu904/index.html
")
- ใช้เวลาในการทดสอบ: 1.200วินาที
- คำขอต่อวินาที: 8334.86 (# / วินาที)
- เวลาต่อคำขอ: 0.120ms
ผลลัพธ์สำหรับhttps with keep-alive (" ab -k -n 10000 https://ubuntu904/index.html
"):
- ใช้เวลาในการทดสอบ: 2.711วินาที
- คำขอต่อวินาที: 3688.12 (# / วินาที)
- เวลาต่อคำขอ: 0.271ms
สรุป :
- ใน testcase ง่าย ๆ นี้ https ช้ากว่า http มาก
- เป็นความคิดที่ดีที่จะเปิดใช้งานการสนับสนุน https และเปรียบเทียบเว็บไซต์ของคุณเพื่อดูว่าคุณต้องการชำระค่าใช้จ่าย https หรือไม่
- ใช้ wireshark เพื่อสร้างความประทับใจให้กับค่าใช้จ่าย SSL