2013-09-23 128 views
9

Thật khó để tìm tất cả các tắc nghẽn, khóa chết và rò rỉ bộ nhớ trong một ứng dụng Java bằng cách sử dụng các bài kiểm tra đơn vị một mình.Kiểm tra hiệu suất/ứng suất Java Các ứng dụng Java EE

Tôi muốn thêm một số mức độ kiểm tra căng thẳng cho ứng dụng của mình. Tôi muốn kiểm tra các giới hạn của ứng dụng và xác định nó phản ứng như thế nào dưới tải trọng cao.

Tôi muốn để đánh giá như sau:

  • availablity dưới tải cao
  • Hiệu suất theo tải trọng cao
  • Memory/CPU/Disk Usage dưới tải cao
  • Liệu nó sụp đổ dưới cao tải hoặc phản ứng một cách duyên dáng

Cũng sẽ rất thú vị khi đo lường và tương phản các đặc điểm đó theo tiêu chuẩn al tải.

Là các kỹ thuật tiêu chuẩn, nổi tiếng của họ để giải quyết vấn đề kiểm tra căng thẳng. Tôi đang tìm kiếm sự giúp đỡ/hướng dẫn trong việc thiết lập một môi trường như vậy. Lý tưởng nhất, tôi muốn chạy các bài kiểm tra này thường xuyên, để wecan xác định xem việc giao hàng gần đây có ảnh hưởng đến hiệu suất hay không.

+2

Tôi muốn giới thiệu Apache JMeter http://jmeter.apache.org/ như một công cụ kiểm tra căng thẳng tuyệt vời cho các ứng dụng web. Nó rất dễ sử dụng và có thể được mở rộng. – Rami

+0

Tôi đã tìm thấy Gatling (http://gatling.io) để trở thành một công cụ tuyệt vời. – cmd

Trả lời

0

Có hai cách tiếp cận chủ yếu để thực hiện trên một ứng dụng:

thử nghiệm Hiệu suất và hệ thống thử nghiệm

Làm thế nào để chúng khác nhau? Thật dễ dàng, nó dựa trên phạm vi của họ, phạm vi kiểm tra hiệu suất là hạn chế và rất phi thực tế. Ví dụ: Kiểm tra trình xử lý IncomingMessage trên một số ứng dụng X, cho điều này, bạn sẽ thiết lập một phép thử gửi các meesages đến trình xử lý này trên cơ sở X, Y, Z. Cách tiếp cận này sẽ giúp bạn giải quyết các vấn đề và đo lường hiệu suất của các vùng riêng lẻ và giới hạn trên ứng dụng của bạn.

Vì vậy, điều này sẽ đưa bạn đến câu hỏi, vì vậy tôi có thể đánh giá và kiểm tra hiệu suất từng thành phần trong ứng dụng của riêng tôi không? Có nếu bạn cho rằng hành vi của thành phần là rất quan trọng và những thay đổi trên các phiên bản mới hơn có khả năng gây ra các hình phạt về hiệu suất. Nhưng, nếu bạn muốn có được cảm nhận về ứng dụng của bạn như một tổng thể, thì các thành phần tương tác với nhau và xem hiệu suất xuất hiện như thế nào, sau đó bạn cần một thử nghiệm hệ thống.

Một thử nghiệm hệ thống sẽ luôn luôn, cố gắng sao chép càng gần càng tốt bất kỳ môi trường sản xuất của khách hàng. Ở đây bạn có thể quan sát cảm giác của thế giới thực về hiệu suất của ứng dụng như thế nào và hành động phù hợp để sửa nó.

Để kết luận, hãy thiết lập thử nghiệm hệ thống trên ứng dụng của bạn và đo lường những gì bạn đang nói bạn muốn đo lường. Sau đó nhấn mạnh toàn bộ hệ thống và xem phản ứng của nó như thế nào, bạn sẽ ngạc nhiên về kết quả.

Cuối cùng, Kiểm tra hiệu suất riêng lẻ bất kỳ thành phần quan trọng nào bạn đã xác định hoặc muốn theo dõi trên ứng dụng của bạn.

Theo nguyên tắc chung, khi thực hiện, bạn nên luôn luôn: 1.- Nhận đường cơ sở cho hệ thống ở trạng thái không hoạt động. 2.- Nhận đường cơ sở cho hệ thống theo tải trọng dự kiến ​​bình thường. 3.- Nhận đường cơ sở cho hệ thống trong điều kiện ứng suất.

Hãy nhớ rằng kết quả tải bình thường phải được ngoại suy cho điều kiện ứng suất và hệ thống đẹp sẽ luôn là hệ thống có quy mô tuyến tính.

Hy vọng điều này sẽ hữu ích.

P.S. Kiểm tra, thiết lập môi trường và thu thập dữ liệu thậm chí phải hoàn toàn tự động nhất có thể, điều này sẽ giúp bạn chạy điều này trên cơ sở và dành thời gian chẩn đoán các vấn đề hiệu suất và không thiết lập thử nghiệm.

5

Tôi là người hâm mộ lớn của JMeter. Bạn có thể thiết lập cuộc gọi trực tiếp với máy chủ ngay khi người dùng truy cập vào nó. Bạn có thể kiểm soát số lượng người dùng (chủ đề đồng thời) và truy cập. Nó có thể làm theo một quy trình làm việc, cạo trang thông tin thích hợp vào trang. Mất từ ​​1 đến 2 ngày để tìm hiểu nó đủ tốt để có hiệu quả. (Bạn có thể làm những điều cơ bản trong vòng một giờ để tải xuống!)

Để xem tất cả ảnh hưởng đến máy chủ như thế nào, đó là một câu hỏi khó khăn hơn. Tôi đã sử dụng các công cụ chuyên nghiệp từ CA và IBM. (Tôi đang vẽ một trống trên tên công cụ cụ thể - có thể do PTSD!) Tôi đã sử dụng các trình biên dịch JVM ngoài hộp. Tôi đã sử dụng công cụ linux và windows gốc. Nếu bạn không quá lo ngại về việc lược tả những phần nào của ứng dụng của bạn gây ra vấn đề, thì bạn có thể sử dụng các công cụ nguyên bản cho hệ điều hành của mình để theo dõi CPU/Memory/IO.

+0

Về "Nó cũng sẽ là thú vị để đo lường và tương phản các đặc điểm như vậy dưới tải bình thường." Tôi sẽ mời bạn kiểm tra Metrics: http://metrics.dropwizard.io/3.1.0/ – lrn2prgrm