Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:

Có thể nói, trong bài viết này, chúng ta sẽ thử sức mình với kỹ thuật đảo ngược. Chúng tôi sẽ sử dụng bàn tay bẩn thỉu của mình để điều khiển từng máy chủ web, khai thác chúng theo những cách mà không ai có thể khai thác được.

Thử nghiệm này là phép đo một con ngựa hình cầu trong chân không, không gì khác hơn là dữ liệu thu được và hiện tại chúng tôi không biết phải làm gì với nó.

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:

Phương pháp luận

Hệ điều hành cho Nginx và Apache là Ubuntu 18.04 LTS, dành cho IIS Windows Server Core 2019. Trước khi thử nghiệm, tất cả các hệ điều hành đều nhận được bản cập nhật mới nhất kể từ ngày 04.12.2019 tháng XNUMX năm XNUMX.

Các thử nghiệm được thực hiện độc quyền qua HTTP. Mỗi máy chủ web chạy cùng một trang, một mẫu Jekyll miễn phí từ Codrops. Liên kết. Mỗi máy chủ web đều bị tắt tính năng nén gzip.

Kiểm tra thông lượng được thực hiện với các công cụ Httpd với các đối số:

ab -n 50000 -c 500 http://192.168.76.204:80/

Máy chủ bị giới hạn ở 10, 5 và 1 phần trăm lõi trên 8, 4 và một lõi. Băng ghế thử nghiệm là một máy tính có tốc độ 9900K@5400 MHz, có nghĩa là máy chủ nhận giới hạn 10% sẽ nhận được khoảng 540 MHz mỗi lõi.

Thử nghiệm TTFB được thực hiện khi máy chủ khởi động lần đầu và đo bằng DevTools; sau khi nhận được kết quả, máy chủ đã bị tắt và quay trở lại điểm kiểm tra trước đó để loại bỏ sự xuất hiện của bất kỳ loại bộ nhớ đệm nào.

Người kiểm tra và máy chủ web ở trên cùng một máy chủ và trên cùng một bộ chuyển mạch ảo.

Để đánh giá ngay hệ thống con đĩa, kết quả của điểm chuẩn ATTO và CrystalDIskMark để có ý tưởng về các điểm nghẽn.

Dữ liệu lấy từ máy ảo:Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:

Kết quả:

TTFB:

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
TTFB trung bình cho IIS là nhỏ nhất, 0,5 mili giây, so với 1,4 mili giây đối với Apache và 4 mili giây đối với Nginx.

Throughput:

Trước tiên, hãy xem mỗi máy chủ có quy mô tốt như thế nào dựa trên số lượng lõi.

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Biểu đồ hiển thị số lượng cuộc gọi của người thử nghiệm đến máy chủ web và độ trễ. Biểu đồ cho thấy NGINX đã xử lý 98% tất cả các yêu cầu, phân phối trang web trong 20 mili giây hoặc ít hơn. IIS, giống như Apache, đã hoàn thành 5% cuối cùng của tất cả các cuộc gọi lần lượt trong 76 mili giây và 14 mili giây.

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Biểu đồ hiển thị thời gian xử lý trung bình cho một yêu cầu trong quá trình kiểm tra sức chịu đựng.

Như bạn có thể thấy từ biểu đồ, IIS đã loại bỏ cả Apache và Nginx, làm chậm đáng kể khi tải cao. 

IIS rõ ràng ưu tiên 4 lõi hơn XNUMX, cho thấy độ trễ thấp hơn trên XNUMX, nhưng cũng không ưu tiên nhiều lõi.

NGINX có quy mô tốt trên tất cả 8 lõi và đối với Apache, kịch bản lõi đơn dường như là lựa chọn tốt nhất.

Khả năng mở rộng:

nginx:

Bây giờ chúng ta hãy xem khả năng mở rộng về mặt tần số và số lượng lõi. 

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Nginx đã không vượt qua các bài kiểm tra với giới hạn 1% cho lõi 4 và 1; khi vượt quá 2000 yêu cầu, nó đã chấm dứt kết nối với người kiểm tra.

Apache:

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Apache, giống như Nginx, sau khi xử lý 2500 yêu cầu, đã từ bỏ và đóng kết nối. Apache đã thất bại trong bài kiểm tra trên 8, 4 và 1 lõi với giới hạn 1%, nhưng ngoài ra, nó cũng thất bại trong bài kiểm tra với giới hạn 5% trên một lõi, tệ hơn cả Nginx

IIS:

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Trong quá trình thử nghiệm, IIS đã tích lũy một hàng yêu cầu khổng lồ nhưng đã xử lý từng yêu cầu đó. Rõ ràng là không có thời gian chờ nào được đặt để xử lý yêu cầu.

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Biểu đồ hiển thị thời gian cần thiết để hoàn thành bài kiểm tra. Các cấu hình thử nghiệm hoàn toàn vô lý đã bị loại bỏ. Sơ đồ cho thấy IIS đòi hỏi khắt khe như thế nào khi nói đến phần cứng và NGINX tuyệt vời như thế nào.

Khả năng mở rộng từ đĩa:

nginx:

Bây giờ chúng ta hãy xem khả năng mở rộng về mặt tần số, số lượng lõi và tốc độ ổ đĩa. 

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Lần này Nginx đã thất bại 4 bài kiểm tra thay vì hai.

Apache:

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
Apache đã thất bại với số lần thử nghiệm tương tự như lần trước.

IIS:

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:
IIS hiển thị một biểu đồ gần như giống hệt nhau, như thể không có hạn chế về ổ đĩa. Nhìn chung, đồ họa của tất cả các máy chủ không thay đổi nhiều, có nghĩa là mỗi máy chủ đều lưu dữ liệu tĩnh vào bộ nhớ đệm trong RAM và phục vụ dữ liệu đó từ đó. Ở đây chúng ta thấy nút thắt cổ chai chính - chính máy chủ web.

Còn quá sớm để đưa ra kết luận dựa trên thử nghiệm này; chúng tôi chưa thử nghiệm HTTPS, nén và HTTP/2 với chứng chỉ trực tiếp từ Let's Encrypt. Chúng ta sẽ nói về điều này trong bài viết tiếp theo.

Trận chiến của các máy chủ WEB. Phần 1 – HTTP mất liên lạc:

Nguồn: www.habr.com

Thêm một lời nhận xét