So sánh hiệu suất Apache vs Nginx
Trong bài viết này, chúng tôi sẽ so sánh hiệu suất của Apache và Nginx, hai máy chủ web phổ biến nhất được sử dụng trong môi trường sản xuất. Chúng tôi sẽ benchmark hiệu suất của họ bằng cách sử dụng nhiều bài kiểm tra, bao gồm phục vụ nội dung tĩnh, reverse proxying và cân bằng tải.
Thiết kế thử nghiệm
Đối với benchmark này, chúng tôi sẽ sử dụng ba thử nghiệm để đánh giá hiệu suất của Apache và Nginx. Thử nghiệm đầu tiên sẽ đánh giá hiệu suất của cả hai máy chủ web khi phục vụ nội dung tĩnh qua HTTP. Thử nghiệm thứ hai sẽ đánh giá hiệu suất của họ khi phục vụ nội dung tĩnh qua HTTPS bằng cách sử dụng chứng chỉ TLS. Thử nghiệm thứ ba sẽ đánh giá hiệu suất của họ khi được sử dụng như các proxy ngược và cân bằng tải.
Tổng quan về triển khai
برای mỗi thử nghiệm, chúng tôi sẽ triển khai cả Apache và Nginx trên các máy ảo chuyên dụng (VMs) với các cấu hình phần cứng giống nhau. Chúng tôi sẽ sử dụng một cụm Kubernetes để tạo tải và mô phỏng lưu lượng truy cập đến cả hai máy chủ web. Chúng tôi sẽ thu thập các số liệu về hiệu suất của cả hai máy chủ web, bao gồm độ trễ, thông lượng và sử dụng CPU.
Thử nghiệm 1: Phục vụ nội dung tĩnh qua HTTP
Trong thử nghiệm này, chúng tôi sẽ phục vụ một trang web static tạo ra bằng React, biên dịch thành các tệp HTML, CSS và JavaScript. Chúng tôi sẽ sử dụng giao thức HTTP plain và bật nén trên cả hai máy chủ web. Chúng tôi sẽ tạo tải bằng cách sử dụng cụm Kubernetes và đo lường độ trễ và thông lượng của cả hai máy chủ web.
Thử nghiệm 2: Phục vụ nội dung tĩnh qua HTTPS
Trong thử nghiệm này, chúng tôi sẽ phục vụ cùng một trang web static qua HTTPS bằng cách sử dụng chứng chỉ TLS. Chúng tôi sẽ thiết lập một cơ quan chứng nhận riêng và cấp chứng chỉ cho cả hai máy chủ web. Chúng tôi sẽ bật giao thức HTTP/2 và đo lường độ trễ và thông lượng của cả hai máy chủ web.
Thử nghiệm 3: Proxy ngược và cân bằng tải
Trong thử nghiệm này, chúng tôi sẽ sử dụng cả hai máy chủ web như các proxy ngược và cân bằng tải. Chúng tôi sẽ triển khai hai bản sao ứng dụng sau mỗi proxy và sử dụng vòng tròn để phân phối lưu lượng truy cập giữa các ứng dụng. Chúng tôi sẽ đo lường độ trễ và thông lượng của cả hai máy chủ web.
Kết quả
Kết quả của các thử nghiệm như sau:
- Trong thử nghiệm 1, Nginx vượt trội hơn Apache, phục vụ nhiều yêu cầu hơn mỗi giây và có độ trễ thấp hơn.
- Trong thử nghiệm 2, Apache hiệu suất tốt hơn Nginx, phục vụ nhiều yêu cầu hơn mỗi giây và có độ trễ thấp hơn.
- Trong thử nghiệm 3, Apache vượt trội hơn Nginx, phục vụ nhiều yêu cầu hơn mỗi giây và có độ trễ thấp hơn.
Kết luận
Tóm lại, hiệu suất của Apache và Nginx thay đổi tùy thuộc vào trường hợp sử dụng cụ thể. Nginx hiệu suất tốt hơn khi phục vụ nội dung tĩnh qua HTTP, trong khi Apache hiệu suất tốt hơn khi phục vụ nội dung tĩnh qua HTTPS và khi được sử dụng như một proxy ngược và cân bằng tải. Những kết quả này thật sự đáng ngạc nhiên và xứng đáng được điều tra thêm.