2009-02-23 8 views
179

Để làm một số thử tải, cho sự tò mò của riêng tôi, trên máy chủ của tôi Tôi chạy:tải thử nghiệm với AB ... yêu cầu thất bại giả (chiều dài)

ab -kc 50 -t 200 http://localhost/index.php 

này mở ra 50 kết nối giữ-sống cho 200 giây và chỉ đâm sầm máy chủ của tôi với yêu cầu index.php

Trong kết quả của tôi, tôi nhận được:

Concurrency Level:  50 
Time taken for tests: 200.007 seconds 
Complete requests:  33106 
Failed requests:  32951 
    (Connect: 0, Receive: 0, Length: 32951, Exceptions: 0) 
Write errors:   0 
Keep-Alive requests: 0 
Total transferred:  1948268960 bytes 
HTML transferred:  1938001392 bytes 
Requests per second: 165.52 [#/sec] (mean) 
Time per request:  302.071 [ms] (mean) 
Time per request:  6.041 [ms] (mean, across all concurrent requests) 
Transfer rate:   9512.69 [Kbytes/sec] received 

Lưu ý 32.951 "thất bại" yêu cầu. Tôi không thể hình này ra.

Khi thử nghiệm đang chạy, tôi có thể truy cập trang web của mình từ máy tính ở nhà một cách hoàn hảo, mặc dù thời gian tải trang ở cuối trang được báo cáo là 0,5 thay vì bình thường .02. Tuy nhiên tôi không bao giờ có một yêu cầu thất bại.

Vậy tại sao AB báo cáo rằng một nửa của các kết nối thất bại? Và "Chiều dài" có nghĩa là gì trong bối cảnh đó?

Cảm ơn

+0

Trang web của bạn có một cân bằng tải? Xem bài viết trên blog của tôi trên [thử tải với cân bằng tải] (http://blog.browsermob.com/2009/02/tips-for-testing-with-load-balancers/) mà có thể giải thích "nó làm việc cho tôi" tình hình trong thử nghiệm tải. –

Trả lời

312

Nevermind. "Độ dài thất bại" chỉ đơn thuần chỉ ra rằng khoảng một nửa thời gian đáp ứng là khác nhau.

Kể từ khi nội dung là năng động, nó có thể là các định danh phiên hoặc một cái gì đó như thế.

+6

Hey, tôi chỉ chạy vào cùng một "vấn đề" và vui mừng câu trả lời này đã ở đây. Thanx! –

+1

Tôi cũng vậy! Họ không thể gọi nó là thứ gì đó ngoài một "thất bại" sao !? – scotts

+2

Cảm ơn câu trả lời, tôi đã có cùng một nghi ngờ. – Saiyine

97

Để mô tả vấn đề nói cách khác:

Công cụ apache điểm chuẩn (ab) giả định rằng chiều dài của nội dung câu trả lời sẽ giống nhau trong toàn bộ bài kiểm tra. Nó lưu trữ độ dài nội dung của phản hồi đầu tiên. Nếu bất kỳ phản hồi nào khác có độ dài nội dung khác nhau, chúng sẽ dẫn đến "lỗi thời gian".

Tiếp theo báo cáo lỗi apache dường như để khẳng định rằng: ASF Bug 42040

Tóm tắt: Nếu bạn đang phục vụ bất kỳ nội dung có độ dài thay đổi, có lẽ bạn nên bỏ qua loại này thất bại yêu cầu ab.

Sửa: Gần đây tôi đã nhận thấy rằng các lệnh ab có (ít nhất là đối với tôi) tùy chọn mới:

-l Accept variable document length (use this for dynamic pages) 

tôi có thể nhìn thấy nó trong Version ab 2.3 < $ Xem xét lại: 1.528.965 $ > nhưng không thể nhìn thấy nó trong ab Version 2.3 < $ xem xét lại: 655.654 $ >, vì vậy nó có lẽ thêm tương đối gần đây.

+2

cảm ơn gợi ý "-l" tùy chọn! – gue

+3

Đối với bất kỳ ai trên máy Mac, rất có thể là phiên bản ab của bạn ở đằng sau và -l sẽ không mất. Bạn có thể cài đặt từ nguồn hoặc thông qua homebrew, nhưng "brew install ab" không hoạt động vì nó là một phần của gói apache - bạn có thể cài đặt với "brew install homebrew/apache/ab". – netpoetica

5

Xin lỗi vì đã ressurrect một câu hỏi cũ, nhưng nó là người đầu tiên mà popped lên trong Google. Đôi khi lỗi độ dài được báo cáo bởi ab có thể do một vấn đề thực sự gây ra: nếu kết nối được đóng phía máy chủ trước khi tổng số byte được khai báo trong tiêu đề Content-Length chưa được khách hàng nhận. Điều đó có thể xảy ra nếu có các bên khác giữa máy khách và máy chủ, ví dụ, cân bằng tải thủ công ngây thơ (trường hợp của tôi).