2009-06-16 1 views
6

Tôi tò mò về cách mọi người tiếp cận câu hỏi về bản chất sau:Làm cách nào để ước tính phần cứng cần thiết để hỗ trợ số lượng người dùng/giao dịch X?

'chúng ta cần tạo Ứng dụng A (ví dụ: trang web thương mại điện tử). Nó sẽ sử dụng công nghệ B (ví dụ java). Nó phải hỗ trợ C (ví dụ 200) số lượng người dùng đồng thời. Chúng ta cần loại phần cứng nào? '

Đặc điểm kỹ thuật phần cứng sẽ liên quan đến số lượng CPU cần thiết và có lẽ lượng bộ nhớ cho câu trả lời cơ bản.

Để đơn giản hóa ví dụ của mình, tôi sẽ gắn bó với công nghệ Java trong câu hỏi của mình, nhưng tôi thực sự muốn có một lời khuyên trung lập về công nghệ.

Tôi hiểu rằng một câu hỏi như thế liên quan đến nhiều yếu tố bổ sung. Ví dụ, một khung công tác khác (kiến trúc Wicket vs Struts vs Spring vs EJB J2EE thuần túy), số lượng các tầng phân tán (một thiết lập hộp hoặc thiết lập 3 tầng). Tuy nhiên, cho rằng một người có thể không có kinh nghiệm trước với công nghệ đã cho (hoặc có thể không có cơ hội để thực hiện kiểm tra tải về việc tìm ra phần cứng cần thiết), và câu hỏi đó luôn xuất hiện trong một cuộc thảo luận dự án ban đầu. (và một câu trả lời là điều cần thiết để làm cơ sở để tiến lên phía trước), làm cách nào để bạn đưa ra câu trả lời?

Tôi đã suy nghĩ về việc giải quyết vấn đề bộ nhớ cần thiết bằng cách ước tính số lượng bộ nhớ mà mỗi phiên người dùng có thể thực hiện, nhưng chắc chắn sẽ có chi phí máy ảo/khung.

Nhưng nói chung, tôi dường như không thể lý giải ra một giải pháp tốt cho câu hỏi này, mà dường như luôn bật lên. Một thử nghiệm tải chắc chắn sẽ giúp giải quyết nó, nhưng sau đó vào thời điểm đó dự án đã sẵn sàng, và đây là câu hỏi mà một khách hàng thường muốn có câu trả lời trước khi cam kết với một dự án.

Mong rằng cộng đồng có thể tư vấn về các phương pháp tiếp cận tốt cho vấn đề này.

Cảm ơn.

Trả lời

3

Bạn thực sự phải đưa ra một số giả định về trải nghiệm người dùng của mình để thực hiện ước tính không được tải thử nghiệm ban đầu của người dùng đồng thời. Bắt đầu với một số giả định về phiên người dùng. giả định sân chơi bóng chày phong nha có thể là (điều này có thể không giữ tùy thuộc vào mức độ phức tạp hay đơn giản của trang web của bạn):

  • Mỗi người dùng truy cập một trang mới hoặc tài nguyên mỗi 5 giây (giả sử AJAXy)
  • Mỗi yêu cầu phải mất trung bình 200ms để xử lý.
  • Nói chung, tốt để có mức sử dụng trung bình là 25% dung lượng cho phép tăng đột biến, thậm chí nhiều hơn đối với các trang web mạng xã hội nơi các mức tăng đột biến có thể lớn hơn.

Sau đó, bạn sẽ nói:

200 người dùng (200ms/5s) => 8 CPU cần trung bình * 4 (25% tải) => 32 CPU.

Tôi không nghĩ điều này đặc biệt là ngôn ngữ trung tâm. Bộ nhớ không đắt tiền, có đủ.

1

Cá nhân, tôi nghĩ rằng bất cứ ai nói với bạn rằng có một giải pháp chung cho vấn đề này là nói dối bạn. Điều đó đặc biệt đúng nếu họ là một nhà cung cấp phần cứng.

Bạn chỉ có thể thực hiện các ước tính như thế này dựa trên tải tương tự với tải mà bạn mong đợi. Sau đó bạn sẽ biết rằng bạn đã nhầm lẫn vì tải thực sự thực sự không giống với tải "tương tự" mà bạn đã sử dụng làm ước tính.

Hy vọng rằng, bạn sẽ học hỏi từ đó và thực hiện ước tính tốt hơn vào lần tiếp theo.

1

Thành thật mà nói, tôi đã nhìn thấy không có cách nào tốt để có được một ước tính hợp lý ngắn làm thử nghiệm tải mẫu. Chỉ đơn giản là có quá nhiều biến trong một ứng dụng của bất kỳ kích thước đáng tin cậy nào: phần cứng (kiến trúc bộ nhớ, số CPU, kiến ​​trúc đĩa), phần mềm (chi tiết triển khai, hệ điều hành, máy ảo [nếu có], hệ thống cơ sở dữ liệu, v.v ...) (mạng, làm mát) và những người khác.

Điều này về cơ bản là một ứng dụng đặc biệt của thử nghiệm hiệu suất. Những người khôn ngoan nhất về chủ đề này đã nói nhiều lần và rõ ràng rằng bạn cần lấy số. Vì vậy, lời khuyên tốt nhất mà tôi có thể đưa ra là đưa ra kế hoạch cần thiết cho các mẫu thử ở giai đoạn sớm nhất có thể để bạn có thể nhận được những số đó kế hoạch cho những con số đó thay đổi theo thời gian để lấy nguyên mẫu hoặc phiên bản làm việc tại mọi trạm kiểm soát kiểm tra lại toàn bộ thời gian của dự án.

Ước tính ban đầu của bạn có thể sẽ không giống với số cuối cùng của bạn, nhưng ít nhất bạn sẽ có thể sửa khi cần thiết tại các điểm quan trọng thay vì đi đến cùng để nhận ra không còn thời gian trong lịch sửa lỗi.

0

Bạn đang yêu cầu cách định lượng kích thước yêu cầu phần cứng của mình.

Tôi, tuy nhiên, sẽ tiếp cận từ góc nhìn khác. Thiết kế ứng dụng của bạn để ứng dụng có thể mở rộng (cho mọi tầng). Từ đó, triển khai lặp lại số 1 của phần cứng của bạn. Chạy một số phiên bản beta công khai về điều đó. Thu thập một số số cuộc sống thực. Và cấu hình lại hệ thống để đáp ứng chỉ số hiệu suất cao hơn. Nói lại.

0

Yêu cầu phần cứng được điều chỉnh nhiều hơn bởi độ phức tạp và chất lượng của phần mềm nhiều hơn so với chi phí được điều chỉnh bởi số lượng người dùng hoặc tải giao dịch. Những người duy nhất tuyên bố khác là các nhà cung cấp phần cứng.