Hướng dẫn sử dụng apache jmeter

Performance Testing rất quan trọng trong việc xác định ứng dụng web được kiểm thử sẽ đáp ứng các yêu cầu tải cao. Performance Testing có thể được sử dụng để phân tích hiệu suất tổng thể của máy chủ dưới tải nặng.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Sử dụng Công cụ kiểm thử Apache JMeter mang lại các lợi ích sau trong Performance Testing:

  • JMeter có thể được sử dụng để kiểm thử hiệu năng của tài nguyên tĩnh như JavaScript và HTML, cũng như các tài nguyên động như JSP, Servlets và AJAX.
  • JMeter có thể kiểm tra số lượng người dùng đồng thời tối đa mà trang web có thể xử lý.
  • JMeter cung cấp các phân tích đồ họa về báo cáo hiệu suất.

Kiểm thử hiệu suất JMeter bao gồm:

  • Load Testing: Mô hình hóa việc sử dụng dự kiến bằng cách mô phỏng đồng thời nhiều người dùng truy cập các dịch vụ Web.
  • Stress Testing: Mỗi máy chủ web có khả năng tải tối đa. Khi tải vượt quá giới hạn, máy chủ web bắt đầu phản hồi chậm và tạo ra lỗi. Mục đích của Stress Testing là tìm tải tối đa mà máy chủ web có thể xử lý.

Hình dưới đây cho thấy cách Load Testing mô phỏng tải nặng:

Bài viết này được đăng tại [free tuts .net]

Tạo một kế hoạch kiểm thử Performance trong JMeter

Trong bài viết này, chúng ta thực hiện phân tích hiệu suất của Google.com cho 1000 người dùng.

Trước khi kiểm thử hiệu năng của ứng dụng web, chúng ta nên xác định:

  • Normal Load: Số người dùng trung bình truy cập trang web của bạn
  • Heavy Load: Số lượng người dùng tối đa truy cập trang web của bạn
  • Mục tiêu của bạn trong lần kiểm thử này là gì?

Dưới đây là các bước thực hiện ví dụ thực tế này:

ớc 1: Thêm Thread Group

  1. Khởi động JMeter
  2. Chọn Test Plan cần thực hiện
  3. Thêm Thread Group

Nhấp chuột phải vào "Test Plan" và thêm một thread group mới: Add -> Threads [Users] -> Thread Group

Trong bảng điều khiển Thread Group, nhập Thread Properties như sau:

  • Number of Threads: 100 [Số lượng người dùng kết nối với trang web mục tiêu: 100]
  • Loop Count: 10 [Số thời gian để thực hiện kiểm thử]
  • Ramp-Up Period: 100

Thread Count và Loop Counts là khác nhau.

Ramp-Up Period cho JMeter biết phải trì hoãn bao lâu trước khi bắt đầu user tiếp theo. Ví dụ: nếu có 100 users, Ramp-Up period là 100 giây, thì độ trễ giữa những người dùng bắt đầu sẽ là 1 giây [100 giây / 100 người dùng].

ớc 2: Thêm JMeter elements

Element này có thể được thêm bằng cách nhấp chuột phải vào Thread Group và chọn: Add -> Config Element -> HTTP Request Defaults.

Trong bảng điều khiển HTTP Request Defaults, nhập tên Trang web được kiểm thử [//www.google.com]

Nhấp chuột phải vào Thread Group và chọn: Add -> Sampler -> HTTP Request.

Trong Bảng điều khiển HTTP Request, trường Path cho biết URL request nào bạn muốn gửi đến máy chủ Google.

Ví dụ: nếu bạn nhập "calendar" trong trường Path . JMeter sẽ tạo yêu cầu URL //www.google.com/calendar đến máy chủ Google.

Nếu bạn giữ trường Path trống, JMeter sẽ tạo yêu cầu URL //www.google.com đến máy chủ Google.

Trong trường hợp này, bạn giữ trường Path trống để làm cho JMeter tạo yêu cầu URL //www.google.com đến máy chủ của Google.

Bước 3: Thêm Graph result

JMeter có thể hiển thị kết quả kiểm thử ở định dạng đồ thị.

Nhấp chuột phải vào Test Plan, Add -> Listener -> Graph Results.

Bước 4: Chạy kiểm thử và nhận kết quả kiểm thử

Nhấn nút Run [Ctrl + R] trên Thanh công cụ để bắt đầu quá trình kiểm thử phần mềm. Bạn sẽ thấy màn hình kết quả kiểm thử trên Biểu đồ trong thời gian thực.

Hình dưới đây trình bày biểu đồ của một test plan mô phỏng 100 users đã truy cập trên trang web www.google.com.

Ở dưới cùng của hình ảnh, có các số liệu thống kê sau, được thể hiện bằng màu sắc:

  • Màu Đen: Tổng số samples hiện tại được gửi.
  • Màu xanh dương: Trung bình hiện tại của tất cả các samples được gửi.
  • Màu đỏ: Độ lệch chuẩn hiện tại.
  • Màu xanh lá cây: Tốc độ Thông lượng đại diện cho số lượng yêu cầu mỗi phút mà máy chủ xử lý.

Hãy phân tích hiệu suất của máy chủ Google trong hình dưới đây:

Để phân tích hiệu suất của máy chủ web đang kiểm thử, bạn nên tập trung vào 2 tham số:

  • Thông lượng [Throughput]
  • Độ lệch [Deviation]

Thông lượng là thông số quan trọng nhất. Nó đại diện cho khả năng của máy chủ để xử lý tải nặng. Thông lượng càng cao thì hiệu suất máy chủ càng tốt.

Trong trường hợp này, thông lượng của máy chủ Google là 1,491.193 / phút. Điều đó có nghĩa là máy chủ Google có thể xử lý 1,491.193 yêu cầu mỗi phút. Giá trị này khá cao nên chúng tôi có thể kết luận rằng máy chủ Google có hiệu suất tốt.

Độ lệch được thể hiện bằng màu đỏ - nó cho biết độ lệch so với mức trung bình. Độ lệch càng nhỏ càng tốt.

Hãy so sánh hiệu suất của máy chủ Google với các máy chủ web khác. Đây là kết quả kiểm tra hiệu suất của trang web //www.yahoo.com/ [Bạn có thể chọn các trang web khác].

Thông lượng của một trang web được kiểm tra //www.yahoo.com là 867.326 / phút, có nghĩa là máy chủ này xử lý 867.326 yêu cầu mỗi phút, thấp hơn Google.

Độ lệch là 2689, cao hơn nhiều so với Google [577]. Vì vậy, có thể xác định hiệu suất của trang web này kém hơn máy chủ Google.

LƯU Ý: Các giá trị trên phụ thuộc vào một số yếu tố như tải máy chủ của Google, tốc độ internet, hiệu năng CPU,... Do đó, rất khó để nhận được kết quả tương tự như trên.

Xử lý sự cố:

Nếu bạn gặp vấn đề trong khi chạy kịch bản trên, hãy làm như sau:

  1. Kiểm tra xem bạn đang kết nối với internet thông qua proxy hay không. Nếu có, loại bỏ proxy.
  2. Khởi động Jmeter
  3. Mở file PerformanceTestPlan.jmx trong Jmeter
  4. Nhấp đúp chuột vào Thread Group-> Graph Result
  5. Chạy kiểm thử

Thứ ba, 24/06/2014 | 00:00 GMT+7

Trong hướng dẫn này, ta sẽ xem xét cách sử dụng Apache JMeter để thực hiện kiểm tra tải và căng thẳng cơ bản trên môi trường ứng dụng web của bạn. Ta sẽ chỉ cho bạn cách sử dụng giao diện user đồ họa để xây dựng kế hoạch thử nghiệm và chạy thử nghiệm trên web server .

JMeter là một ứng dụng Java dành cho máy tính để bàn open-souce được thiết kế để kiểm tra tải và đo lường hiệu suất. Nó được dùng để mô phỏng vô số tình huống khác nhau và xuất dữ liệu hiệu suất theo một số cách, bao gồm các file CSV và XML cũng như đồ thị. Bởi vì nó là 100% Java, nó có sẵn trên mọi hệ điều hành hỗ trợ Java 6 trở lên.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần có một máy tính mà bạn có thể chạy JMeter trên đó và một web server để tải thử nghiệm. Không chạy các thử nghiệm này đối với server production của bạn trừ khi bạn biết chúng có thể xử lý tải hoặc bạn có thể tác động tiêu cực đến hiệu suất server của bạn .

Bạn có thể điều chỉnh các bài kiểm tra trong hướng dẫn này cho bất kỳ ứng dụng web nào của bạn . Web server mà ta đang thử nghiệm làm ví dụ là VPS 1 CPU / 512 MB chạy WordPress trên LEMP Stack, trong Trung tâm dữ liệu NYC2 DigitalOcean. Máy tính JMeter đang chạy trong văn phòng DigitalOcean ở NYC [có liên quan đến độ trễ của các bài kiểm tra của ta ].

Xin lưu ý kết quả kiểm tra JMeter có thể bị sai lệch bởi nhiều yếu tố, bao gồm tài nguyên hệ thống [CPU và RAM] có sẵn cho JMeter và mạng giữa JMeter và web server đang được kiểm tra. Kích thước của tải mà JMeter có thể tạo ra mà không làm sai lệch kết quả có thể được tăng lên bằng cách chạy các bài kiểm tra ở chế độ không đồ họa hoặc bằng cách phân phối việc tạo tải cho nhiều server JMeter.

Cài đặt JMeter

Vì ta đang sử dụng Apache JMeter làm ứng dụng dành cho máy tính để bàn và có rất nhiều hệ điều hành dành cho máy tính để bàn đang được sử dụng, ta sẽ không đề cập đến các bước cài đặt của JMeter cho bất kỳ hệ điều hành cụ thể nào. Như đã nói, JMeter rất dễ cài đặt. Cách dễ nhất để cài đặt là sử dụng trình quản lý gói [ví dụ: apt-get hoặc Homebrew] hoặc download và hủy lưu trữ các file binary JMeter từ trang web chính thức và cài đặt Java [phiên bản 6 trở lên].

Dưới đây là danh sách phần mềm, với các liên kết đến repository , cần thiết để chạy JMeter:

  • Oracle Java hoặc OpenJDK [6 trở lên]
  • Apache JMeter

Tùy thuộc vào cách bạn cài đặt Java, bạn có thể cần thêm folder bin Java vào biến môi trường PATH của bạn để JMeter có thể tìm thấy các file binary Java và keytool.

Ngoài ra, ta sẽ đề cập đến đường dẫn mà bạn đã cài đặt JMeter đến [thư mục mà bạn đã hủy lưu trữ nó] là $JMETER_HOME . Do đó, nếu bạn đang sử dụng Hệ điều hành dựa trên Linux hoặc Unix, file binary JMeter được đặt tại $JMETER_HOME/bin/jmeter . Nếu bạn đang chạy Windows, bạn có thể chạy $JMETER_HOME/bin/jmeter.bat .

Để tham khảo, khi viết hướng dẫn này, ta đã sử dụng các version phần mềm sau:

  • Bản cập nhật Oracle Java 7 60, 64-bit
  • JMeter 2.11

Khi bạn đã cài đặt và chạy JMeter, hãy chuyển sang xây dựng kế hoạch thử nghiệm!

Xây dựng kế hoạch thử nghiệm cơ bản

Sau khi khởi động JMeter, bạn sẽ thấy giao diện user đồ họa với Kế hoạch kiểm tra trống:

Kế hoạch thử nghiệm bao gồm một chuỗi các thành phần thử nghiệm để xác định cách thử nghiệm tải sẽ được mô phỏng. Ta sẽ giải thích cách một số thành phần này được dùng khi ta thêm chúng vào kế hoạch thử nghiệm của bạn .

Thêm một group chủ đề

Đầu tiên, thêm một Group chủ đề vào Kế hoạch kiểm tra :

  1. Nhấp chuột phải vào Kế hoạch kiểm tra
  2. Di chuột qua Thêm>
  3. Di chuột qua Chủ đề [ User ]>
  4. Nhấp vào Group Chủ đề

Group chủ đề có ba thuộc tính đặc biệt quan trọng ảnh hưởng đến thử nghiệm tải:

  • Số stream [ user ] : Số lượng user mà JMeter sẽ cố gắng mô phỏng. Đặt giá trị này thành 50
  • Khoảng thời gian tăng tốc [tính bằng giây] : Khoảng thời gian mà JMeter sẽ phân phối thời gian bắt đầu của các stream . Đặt giá trị này thành 10 .
  • Số vòng lặp : Số lần thực hiện kiểm tra. Để bộ này thành 1 .

Thêm mặc định yêu cầu HTTP

Phần tử cấu hình mặc định yêu cầu HTTP được sử dụng để đặt giá trị mặc định cho Yêu cầu HTTP trong kế hoạch thử nghiệm của ta . Điều này đặc biệt hữu ích nếu ta muốn gửi nhiều yêu cầu HTTP đến cùng một server như một phần của thử nghiệm. Bây giờ, hãy thêm Mặc định Yêu cầu HTTP vào Group Chủ đề :

  1. Chọn Group chủ đề , sau đó bấm chuột phải vào nó
  2. Di chuột qua Thêm>
  3. Di chuột qua Phần tử cấu hình>
  4. Nhấp vào Mặc định Yêu cầu HTTP

Trong Mặc định Yêu cầu HTTP, trong phần Server Web, hãy điền vào trường Tên Server hoặc IP với tên hoặc địa chỉ IP của web server bạn muốn kiểm tra. Đặt server ở đây làm cho nó trở thành server mặc định cho phần còn lại của các mục trong group stream này.

Thêm trình quản lý cookie HTTP

Nếu web server của bạn sử dụng cookie, bạn có thể thêm hỗ trợ cho cookie bằng cách thêm Trình quản lý cookie HTTP vào Group chủ đề:

  1. Chọn Group chủ đề , sau đó bấm chuột phải vào nó
  2. Di chuột qua Thêm>
  3. Di chuột qua Phần tử cấu hình>
  4. Nhấp vào Trình quản lý cookie HTTP

Thêm trình lấy mẫu yêu cầu HTTP

Đến đây bạn sẽ muốn thêm một trình lấy mẫu HTTP Request vào Thread Group , đại diện cho một yêu cầu trang mà mỗi stream [ user ] sẽ truy cập:

  1. Chọn Group chủ đề , sau đó bấm chuột phải vào nó
  2. Di chuột qua Thêm>
  3. Di chuột qua Trình lấy mẫu>
  4. Nhấp vào Yêu cầu HTTP

Trong Yêu cầu HTTP, dưới phần Yêu cầu HTTP, hãy điền vào Đường dẫn có mục mà bạn muốn mỗi stream [ user ] yêu cầu. Ta sẽ đặt điều này thành / , vì vậy mỗi chuỗi sẽ truy cập vào trang chủ của server của ta . Lưu ý bạn không cần chỉ định server trong mục này vì nó đã được chỉ định trong mục Mặc định Yêu cầu HTTP.

Lưu ý: Nếu bạn muốn thêm nhiều Yêu cầu HTTP hơn như một phần của thử nghiệm, hãy lặp lại bước này. Mọi stream sẽ thực hiện tất cả các yêu cầu trong kế hoạch thử nghiệm này.

Thêm kết quả xem trong trình nghe bảng

Trong JMeter, bộ lắng nghe được sử dụng để xuất kết quả của một bài kiểm tra tải. Có nhiều trình nghe có sẵn và có thể thêm các trình nghe khác bằng cách cài đặt plugin. Ta sẽ sử dụng Bảng vì nó dễ đọc.

  1. Chọn Group chủ đề , sau đó bấm chuột phải vào nó
  2. Di chuột qua Thêm>
  3. Di chuột qua Trình nghe>
  4. Nhấp vào Xem kết quả trong bảng

Bạn cũng có thể nhập một giá trị cho Tên file để xuất kết quả ra file CSV.

Chạy kế hoạch thử nghiệm cơ bản

Bây giờ ta đã cài đặt xong kế hoạch thử nghiệm cơ bản, hãy chạy nó và xem kết quả.

Đầu tiên, lưu kế hoạch thử nghiệm bằng cách nhấp vào Tệp rồi Lưu , sau đó chỉ định tên file mong muốn của bạn. Sau đó chọn Xem kết quả trong Bảng ở khung bên trái, sau đó nhấp vào Chạy từ menu chính rồi nhấp vào Bắt đầu [hoặc chỉ cần nhấp vào mũi tên Bắt đầu màu xanh lục bên dưới menu chính]. Bạn sẽ thấy kết quả kiểm tra trong bảng khi kiểm tra được chạy như sau:

Diễn giải kết quả

Bạn có thể sẽ thấy rằng Trạng thái của tất cả các yêu cầu là “Thành công” [được biểu thị bằng hình tam giác màu xanh lục có dấu kiểm]. Sau đó, các cột mà bạn có thể quan tâm nhất là cột Thời gian mẫu [mili giây] và Độ trễ [không hiển thị trong ví dụ].

  • Độ trễ : Số mili giây đã trôi qua từ khi JMeter gửi yêu cầu đến khi nhận được phản hồi ban đầu
  • Thời gian mẫu : Số mili giây mà server đã sử dụng để phục vụ đầy đủ yêu cầu [phản hồi + độ trễ]

Theo bảng được tạo, phạm vi Thời gian lấy mẫu là 128-164 ms. Đây là thời gian phản hồi hợp lý cho một trang chủ cơ bản [khoảng 55 KB]. Nếu server ứng dụng web của bạn không gặp khó khăn về tài nguyên, như được minh họa trong ví dụ, Thời gian lấy mẫu của bạn sẽ bị ảnh hưởng chủ yếu bởi khoảng cách địa lý [thường làm tăng độ trễ] và kích thước của mục được yêu cầu [làm tăng thời gian truyền]. Kết quả cá nhân của bạn sẽ khác với ví dụ.

Vì vậy, server của ta đã sống sót sau khi mô phỏng 50 user truy cập trang chủ WordPress 55 KB của ta trong hơn 10 giây [5 giây mỗi giây], với phản hồi có thể chấp nhận được. Hãy xem điều gì sẽ xảy ra khi ta tăng số lượng đề.

Tăng tải

Ta hãy làm thử bài kiểm tra tương tự với 80 đề trong 10 giây. Trong mục Group chủ đề ở ngăn bên trái, hãy thay đổi Số stream [ user ] thành 80 . Bây giờ hãy nhấp vào Xem kết quả trong Bảng , sau đó nhấp vào Bắt đầu . Trên server mẫu của ta , kết quả là bảng sau:

Như bạn thấy , thời gian lấy mẫu đã tăng lên gần một giây, điều này cho thấy rằng server ứng dụng web của ta đang bắt đầu trở nên quá tải bởi các yêu cầu. Hãy đăng nhập vào VPS của ta và xem nhanh việc sử dụng tài nguyên trong quá trình kiểm tra tải.

Đăng nhập vào web server của bạn qua SSH và chạy top :

top

Trừ khi bạn có user chủ động truy cập vào server của bạn , bạn sẽ thấy rằng Cpu [các]% sử dụng của user [ ta ] phải rất thấp hoặc 0% và Cpu% nhàn rỗi [ id ] phải là 99% trở lên, như vì thế:

Bây giờ, trong JMeter , hãy bắt đầu kiểm tra lại, sau đó chuyển trở lại phiên SSH của web server của bạn. Bạn sẽ thấy mức sử dụng tài nguyên tăng lên:

Trong trường hợp ví dụ của ta , mức sử dụng CPU% của user là 94% và mức sử dụng hệ thống [ sy ] là 4,7% với 0% không hoạt động. Ta không hết bộ nhớ, như được chỉ ra trong hình trên, vì vậy hiệu suất giảm là do thiếu sức mạnh của CPU! Ta cũng có thể thấy rằng các quy trình php5-fpm, đang phục vụ WordPress, đang sử dụng đang sử dụng phần lớn CPU [khoảng 96% kết hợp].

Để đáp ứng nhu cầu của mô phỏng 80 user này trong 10 giây, ta cần tăng CPU hoặc tối ưu hóa cài đặt server của bạn để sử dụng ít CPU hơn. Trong trường hợp của WordPress, ta có thể di chuyển database MySQL [sử dụng một phần CPU] sang một server khác và ta cũng có thể triển khai bộ nhớ đệm [sẽ làm giảm mức sử dụng CPU].

Nếu bạn tò mò, bạn có thể điều chỉnh số stream trong thử nghiệm để xem server của bạn có thể xử lý bao nhiêu trước khi nó bắt đầu có biểu hiện suy giảm hiệu suất. Trong trường hợp ví dụ về 1 server CPU của ta , nó hoạt động tốt cho đến khi ta sử dụng 72 stream trong 10 giây.

Kết luận

JMeter có thể là một công cụ rất có giá trị để xác định cách cài đặt server ứng dụng web của bạn nên được cải thiện, nhằm giảm tắc nghẽn và tăng hiệu suất. Đến đây bạn đã quen với cách sử dụng cơ bản của JMeter, vui lòng tạo các kế hoạch thử nghiệm mới để đo lường hiệu suất của các server của bạn trong các tình huống khác nhau.

Thử nghiệm mà ta sử dụng làm ví dụ không phản ánh chính xác cách sử dụng của user bình thường, nhưng JMeter có các công cụ để thực hiện nhiều thử nghiệm có thể hữu ích trong môi trường của bạn . Ví dụ: JMeter có thể được cấu hình để mô phỏng user đăng nhập vào ứng dụng của bạn, bộ nhớ đệm phía client và xử lý các phiên user bằng cách viết lại URL. Có nhiều công cụ lấy mẫu, trình nghe và cấu hình tích hợp sẵn khác có thể giúp bạn xây dựng kịch bản mong muốn. Ngoài ra, có các plugin JMeter để nâng cao chức năng của nó, có sẵn để download tại //jmeter-plugins.org/ .

Tags:

Các tin liên quan

Cách cấu hình OCSP Stapling trên Apache và Nginx
2014-06-12
Cách tạo chứng chỉ SSL trên Apache cho Ubuntu 14.04
2014-04-23
Cách thiết lập server ảo Apache trên Ubuntu 14.04 LTS
2014-04-22
Cách cài đặt Apache Tomcat 7 trên Ubuntu 14.04 qua Apt-Get
2014-04-18
Cách thiết lập server ảo Apache trên Ubuntu 13.10
2014-04-16
Cách chạy Django với mod_wsgi và Apache với môi trường Python virtualenv trên VPS Debian
2014-04-10
Cách di chuyển cấu hình Apache của bạn từ cú pháp 2.2 sang 2.4.
2014-03-31
Cách sử dụng server Apache HTTP dưới dạng Reverse-Proxy bằng cách sử dụng extension mod_proxy
2014-02-14
Cách cài đặt và cấu hình Apache Tomcat trên server Debian
2014-01-07
Cách cài đặt và quản lý Apache Qpid
2013-12-30

Video liên quan

Chủ Đề