Cách sử dụng Apache JMeter để thực hiện kiểm tra tải trên web server
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 :
- Nhấp chuột phải vào Kế hoạch kiểm tra
- Di chuột qua Thêm>
- Di chuột qua Chủ đề ( User )>
- 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ủ đề :
- Chọn Group chủ đề , sau đó bấm chuột phải vào nó
- Di chuột qua Thêm>
- Di chuột qua Phần tử cấu hình>
- 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ủ đề:
- Chọn Group chủ đề , sau đó bấm chuột phải vào nó
- Di chuột qua Thêm>
- Di chuột qua Phần tử cấu hình>
- 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:
- Chọn Group chủ đề , sau đó bấm chuột phải vào nó
- Di chuột qua Thêm>
- Di chuột qua Trình lấy mẫu>
- 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.
- Chọn Group chủ đề , sau đó bấm chuột phải vào nó
- Di chuột qua Thêm>
- Di chuột qua Trình nghe>
- 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 http://jmeter-plugins.org/ .
Các tin liên quan
Cách cấu hình OCSP Stapling trên Apache và Nginx2014-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