Câu trả lời ngắn gọn là: Không ai có thể trả lời câu hỏi này trừ bạn.
Câu trả lời dài là việc đo điểm chuẩn khối lượng công việc cụ thể của bạn là điều mà bạn cần phải tự thực hiện, bởi vì nó giống như hỏi "Một đoạn dây dài bao nhiêu?".
Một trang web tĩnh một trang đơn giản có thể được lưu trữ trên Pentium Pro 150 và vẫn phục vụ hàng ngàn lần hiển thị mỗi ngày.
Cách tiếp cận cơ bản bạn cần thực hiện để trả lời câu hỏi này là thử nó và xem điều gì sẽ xảy ra. Có rất nhiều công cụ mà bạn có thể sử dụng để đặt hệ thống của bạn dưới áp lực một cách giả tạo để xem nó khóa ở đâu.
Tổng quan ngắn gọn về điều này là:
- Đặt kịch bản của bạn vào vị trí
- Thêm giám sát
- Thêm lưu lượng
- Đánh giá kết quả
- Khắc phục dựa trên kết quả
- Rửa sạch, lặp lại cho đến khi hạnh phúc hợp lý
Đặt kịch bản của bạn vào vị trí
Về cơ bản, để kiểm tra một số tải, bạn cần một cái gì đó để kiểm tra. Thiết lập một môi trường để kiểm tra chống lại. Đây có thể là một phỏng đoán khá gần với phần cứng sản xuất của bạn nếu có thể, nếu không bạn sẽ bị ngoại suy dữ liệu của mình.
Thiết lập máy chủ, tài khoản, trang web, băng thông, v.v. Ngay cả khi bạn thực hiện việc này trên máy ảo, chỉ cần bạn chuẩn bị để thu nhỏ kết quả của mình.
Vì vậy, tôi sẽ thiết lập một máy ảo trung cấp (hai lõi, RAM 512 MB, ổ cứng 4 GB) và cài đặt bộ cân bằng tải yêu thích của tôi, haproxy
bên trong Red Hat Linux trên VM.
Tôi cũng sẽ có hai máy chủ web phía sau bộ cân bằng tải mà tôi sẽ sử dụng để kiểm tra căng thẳng bộ cân bằng tải. Hai máy chủ web này được thiết lập giống hệt với hệ thống trực tiếp của tôi.
Thêm giám sát
Bạn sẽ cần một số số liệu để theo dõi, vì vậy tôi sẽ đo xem có bao nhiêu yêu cầu đến máy chủ web của tôi và bao nhiêu yêu cầu tôi có thể thực hiện trong mỗi giây trước khi người dùng bắt đầu nhận được thời gian phản hồi hơn hai giây.
Tôi cũng sẽ theo dõi việc sử dụng RAM, CPU và ổ đĩa haproxy
để đảm bảo rằng bộ cân bằng tải có thể xử lý các kết nối.
Làm thế nào để làm điều này phụ thuộc rất nhiều vào nền tảng của bạn và nằm ngoài phạm vi của câu trả lời này. Bạn có thể cần xem lại tệp nhật ký máy chủ web, bắt đầu bộ đếm hiệu suất hoặc dựa vào khả năng báo cáo của công cụ kiểm tra căng thẳng của mình.
Một vài điều bạn luôn muốn theo dõi:
- Sử dụng CPU
- Sử dụng RAM
- Sử dụng đĩa
- Độ trễ đĩa
- Sử dụng mạng
Bạn cũng có thể chọn xem xét các bế tắc SQL, tìm kiếm thời gian, v.v. tùy thuộc vào những gì bạn đang kiểm tra cụ thể.
Thêm lưu lượng
Đây là nơi mọi thứ trở nên vui vẻ. Bây giờ bạn cần phải mô phỏng một tải thử nghiệm. Có rất nhiều công cụ có thể làm điều này, với các tùy chọn cấu hình:
Chọn một số, bất kỳ số nào. Giả sử bạn sẽ thấy hệ thống phản hồi như thế nào với 10.000 lượt truy cập mỗi phút. Không quan trọng bạn chọn số nào vì bạn sẽ lặp lại bước này nhiều lần, điều chỉnh số đó lên hoặc xuống để xem hệ thống phản hồi như thế nào.
Tốt nhất, bạn nên phân phối 10.000 yêu cầu này qua nhiều máy khách / nút kiểm tra tải để một máy khách không trở thành nút cổ chai của yêu cầu. Ví dụ, Kiểm tra từ xa của JMeter cung cấp giao diện trung tâm để khởi chạy một số máy khách từ máy Jmeter kiểm soát.
Nhấn nút ma thuật Go và xem các máy chủ web của bạn tan chảy và sụp đổ.
Đánh giá kết quả
Vì vậy, bây giờ bạn cần quay lại các số liệu bạn đã thu thập ở bước 2. Bạn thấy rằng với 10.000 kết nối đồng thời, haproxy
hộp của bạn hầu như không bị đổ mồ hôi, nhưng thời gian phản hồi với hai máy chủ web chỉ mất 5 giây. Điều đó không thú vị - hãy nhớ rằng, thời gian phản hồi của bạn đang nhắm đến hai giây. Vì vậy, chúng ta cần thực hiện một số thay đổi.
Khắc phục
Bây giờ, bạn cần tăng tốc trang web của mình hơn hai lần. Vì vậy, bạn biết rằng bạn cần phải tăng quy mô hoặc mở rộng quy mô.
Để mở rộng quy mô, hãy lấy máy chủ web lớn hơn, RAM nhiều hơn, đĩa nhanh hơn.
Để mở rộng quy mô, có được nhiều máy chủ hơn.
Sử dụng số liệu của bạn từ bước 2 và thử nghiệm để đưa ra quyết định này. Ví dụ, nếu bạn thấy rằng độ trễ của đĩa là rất lớn trong quá trình thử nghiệm, bạn biết rằng bạn cần mở rộng quy mô và nhận được các ổ cứng nhanh hơn.
Nếu bạn thấy rằng bộ xử lý đã ở mức 100% trong quá trình thử nghiệm, có lẽ bạn cần mở rộng ra để thêm các máy chủ web bổ sung để giảm áp lực cho các máy chủ hiện có.
Không có câu trả lời đúng hay sai chung chung, chỉ có những gì phù hợp với bạn. Hãy thử nhân rộng và nếu điều đó không hiệu quả, thay vào đó hãy mở rộng ra. Hoặc không, tùy thuộc vào bạn và một số suy nghĩ bên ngoài hộp.
Hãy nói rằng chúng tôi sẽ mở rộng quy mô. Vì vậy, tôi quyết định sao chép hai máy chủ web của mình (chúng là VM) và bây giờ tôi có bốn máy chủ web.
Rửa sạch, lặp lại
Bắt đầu lại từ Bước 3. Nếu bạn thấy rằng mọi thứ không diễn ra như bạn mong đợi (ví dụ: chúng tôi đã nhân đôi máy chủ web, nhưng thời gian phản hồi vẫn còn hơn hai giây), sau đó xem xét các nút thắt khác. Ví dụ: bạn đã nhân đôi các máy chủ web, nhưng vẫn có một máy chủ cơ sở dữ liệu xảo quyệt. Hoặc, bạn đã nhân bản nhiều máy ảo hơn, nhưng vì chúng trên cùng một máy chủ vật lý, bạn chỉ đạt được sự tranh chấp cao hơn đối với tài nguyên máy chủ.
Sau đó, bạn có thể sử dụng quy trình này để kiểm tra các phần khác của hệ thống. Thay vì nhấn bộ cân bằng tải, hãy thử đánh trực tiếp máy chủ web hoặc máy chủ SQL bằng công cụ đo điểm chuẩn SQL .