it-swarm-vi.tech

Công cụ kiểm tra tải máy chủ HTTP?

Tôi đã phải tải thử nghiệm các máy chủ/ứng dụng web HTTP một vài lần và mỗi lần tôi bị choáng ngợp bởi chất lượng của các công cụ tôi có thể tìm thấy.

Vậy, khi bạn tải thử nghiệm máy chủ HTTP, bạn sử dụng công cụ nào? Và những điều tôi rất có thể sẽ làm sai trong lần tới khi tôi phải làm điều đó là gì?

39
David Wolever

JMeter là miễn phí.

Mercury Interactive Load Runner là siêu đẹp và siêu đắt.

24
Chad Grant

Tôi cảm thấy đủ điều kiện bất thường để trả lời câu hỏi này, vì công ty hiện tại của tôi cần mô phỏng 25.000 kết nối đồng thời với các máy chủ web của chúng tôi (chúng tôi phục vụ quảng cáo trực tuyến).

Đối với thử nghiệm tải khối lượng cực lớn, Httperf là cách để đi. Nó miễn phí và theo kinh nghiệm của chúng tôi, nó có thể mô phỏng nhiều kết nối đồng thời mà JMeter hoặc STA trên cùng một phần cứng.

Biên tập:

Chỉ trong trường hợp bạn tò mò, chúng tôi mô phỏng 3500 yêu cầu mỗi giây trên một Optiplex 330 có công suất thấp, rẻ tiền, siêu nhỏ. Những hộp nhỏ này có giá chỉ 280 đô la và chúng tôi có một loạt chúng được nối để chạy Httperf theo yêu cầu. Để so sánh, JMeter chỉ có thể đẩy khoảng 800-900 req/giây trên phần cứng này.

21
Portman

Nếu bạn chỉ muốn tải tải tại một URL tại một thời điểm trên máy chủ web thì hãy tải xuống Apache AB. Nó đi kèm với máy chủ HTTP Apache.

Lệnh đơn giản

ab -n 10000 -c 10 http://serverfault.com/questions/2107/tools-for-load-testing-http-servers

sẽ chạy 10000 yêu cầu với sự đồng thời của 10 người dùng.

Nếu bạn muốn ghi lại các phiên duyệt web, hãy truy cập và chấp nhận câu trả lời của jmeter. Jmeter là tuyệt vời và nó có thể mở rộng quy mô cho nhiều máy thử nghiệm có thể ném tải lớn.

20
Stewart Robinson

Tsung , một công cụ dựa trên Erlang.

Ngoài ra còn có một danh sách dài các công cụ tại http://www.softwareqatest.com/qatweb1.html#LOAD

8
Jauder Ho

Để kiểm tra nhanh, bạn có thể sử dụng các chuỗi và chuỗi URL. Ví dụ: chúng tôi sẽ chạy thử nghiệm tải trọng đối với Google, chúng tôi có thể chạy ...

curl -s "http://google.com?[1-1000]"

Điều này sẽ thực hiện 1000 cuộc gọi đến google, tức là.

http://google.com?1  
http://google.com?2  
http://google.com?3 
... 
http://google.com?1000

Điều này được thảo luận chi tiết hơn tại Cách nhanh chóng kiểm tra máy chủ web bằng curl.

6
Ian Purton

Bạn sẽ cần phải thiết lập các thử nghiệm khác nhau:

  • Kiểm tra bình thường, mô phỏng người dùng như họ sẽ hành xử. Bạn sẽ thực hiện thời gian suy nghĩ (không có http fury 1s giữa các trang). Một cách là ghi lại một phiên web, vì vậy bạn sẽ có thời gian thực tế để hoàn thành/đọc từng trang. Tải sẽ đến từng bước cho đến khi bạn đạt được tải hiện tại trung bình trong sản xuất
  • Kiểm tra độ vỡ: Tương tự như trước, nhưng thêm tải cho đến khi bạn gặp lỗi http 500 đầu tiên. Mục tiêu là để biết bạn có thể quản lý bao nhiêu tải cho đến khi nó bị hỏng
  • Chạy thử dài. Bạn giữ kịch bản đầu tiên chạy trong 12 giờ, để chắc chắn rằng bạn không bị rò rỉ bộ nhớ hoặc suy giảm hiệu suất theo thời gian.

Sau/trước mỗi lần kiểm tra, bạn phải đặt lại nền tảng như trước: khôi phục cơ sở dữ liệu, khởi động lại để dọn dẹp bộ nhớ và bộ đệm.

Bạn cũng sẽ thực hiện khởi động: Khởi chạy các kịch bản một lần trước khi thử nghiệm thực sự, để các trang web được biên dịch, kết nối với cơ sở dữ liệu được thực hiện. Khác, cuộc gọi đầu tiên sẽ luôn xấu trong số liệu thống kê của bạn.

Bạn có thể thêm độ phức tạp, như:

  • sử dụng các kịch bản khác nhau (khách/khách, thành viên), sẽ thực hiện khác nhau.
  • Mô phỏng truy cập băng thông khác nhau
  • Ngẫu nhiên tìm kiếm Word và suy nghĩ thời gian.

Một điều quan trọng cuối cùng: Bạn PHẢI lưu tất cả kịch bản đã hoàn thành để có thể thực hiện lại chúng theo cùng một cách, để bạn có thể so sánh hiệu suất với các thử nghiệm trước đó.

5
Mathieu Chateau

Nếu bạn chỉ muốn kiểm tra cách nó xử lý nhiều kết nối, bạn có thể sử dụng cái gì đó như Siege . Vẫn không chắc chắn đó là một biện pháp tuyệt vời nhưng ít nhất nó sẽ cho bạn biết bạn đang xử lý nhiều kết nối như thế nào

2
trent

Tôi đã sử dụng openSTA .

Điều này sử dụng một ngôn ngữ kịch bản tương đối đơn giản.

Bạn có thể dễ dàng kiểm tra các dịch vụ/máy chủ web và viết các tập lệnh của riêng bạn.

Nó cho phép bạn đặt các tập lệnh cùng nhau trong một thử nghiệm theo bất kỳ cách nào bạn muốn và định cấu hình số lần lặp, số lượng người dùng trong mỗi lần lặp, thời gian tăng dần để giới thiệu mỗi người dùng mới và độ trễ giữa mỗi lần lặp. Các xét nghiệm cũng có thể được lên lịch trong tương lai.

Đó là nguồn mở và miễn phí.

Nó tạo ra một số báo cáo có thể được lưu vào bảng tính. Sau đó chúng tôi sử dụng bảng xoay để dễ dàng phân tích và vẽ biểu đồ kết quả.

2
nzpcmad

Tôi đã sử dụng LoadRunner trước đây, nhưng nó khá đắt, tôi cũng đã sử dụng các công cụ phiên bản Team Tester của Microsoft, bao gồm một hệ thống tiến hành kiểm tra tải. Tôi khá hài lòng với cách công cụ này hoạt động và bạn có thể mở rộng các bài kiểm tra bằng cách sử dụng .net, đây là một cú pháp dễ dàng hơn để chọn sau đó là LoadRunner.

Phiên bản của trình chạy tải mà chúng tôi đã sử dụng cũng không thể xử lý AJAX (Điều này đã trở lại vào năm 2000 vì vậy tôi chắc chắn rằng công cụ này đã được cải tiến ngay bây giờ)

1
JoshBerke

Chúng tôi sử dụng WAPT , và nó hoạt động rất tốt. Dễ dàng cài đặt, và chỉ vài trăm đô la. LoadRUnner được định giá quá cao một cách lố bịch và hoàn toàn nằm ngoài tầm với của tất cả trừ hte Forutune 500.

1
rmalayter

Nó phụ thuộc vào mức độ phức tạp của kịch bản của bạn.

Để mô phỏng chính xác tải người dùng thực trên máy chủ của bạn, bạn nên thử mô phỏng những gì người dùng thực sự đang làm. Nếu người dùng của bạn chỉ cần truy cập máy chủ bằng một URL, bất kỳ công cụ miễn phí/đơn giản nào cũng được.

Đối với trang web phức tạp hơn một chút, bạn sẽ muốn sử dụng một công cụ giúp bạn tương quan giá trị động, tham số hóa, v.v. Bạn có thể sử dụng Load-Runner và tương tự, tôi thích sử dụng WebLOAD =.

0
Yasei No Umi