Proxy Cho Load Testing JMeter: Mô Phỏng Traffic Nhiều IP
Proxy cho load testing JMeter là cách để bài kiểm thử tải phản ánh sát hơn lưu lượng thật, nơi người dùng đến từ hàng nghìn địa chỉ IP và nhiều vùng địa lý. Gửi toàn bộ tải từ một máy thường bị giới hạn tần suất chặn lại trước khi chạm tới ứng dụng. Bài viết của ProxyVN hướng dẫn cấu hình trên giao diện, dòng lệnh, cách xoay proxy và đọc kết quả.
Proxy cho load testing JMeter giải quyết bài toán gì
Apache JMeter là công cụ kiểm thử tải mã nguồn mở, dùng để đánh giá hiệu năng của website và dịch vụ khi có lượng truy cập lớn. Proxy là máy chủ trung gian giúp các yêu cầu kiểm thử đi ra từ nhiều địa chỉ khác nhau.
Theo hướng dẫn của ProxyScrape, proxy cho phép người kiểm thử mô phỏng yêu cầu từ nhiều địa điểm và thiết bị mà không cần có mặt tại đó.

Vì sao một IP chưa đủ để kiểm thử tải
Hạn chế khi kiểm thử từ một IP
Hệ thống thật có tường lửa ứng dụng web, giới hạn tần suất theo IP và mạng phân phối nội dung. Khi toàn bộ tải đến từ một địa chỉ, các lớp này phản ứng khác hẳn so với lưu lượng thật.
Kết quả là anh em đo sức chịu của lớp giới hạn tần suất chứ không đo được sức chịu của ứng dụng phía sau.
Ba lợi ích chính
Trang giải pháp của Decodo nêu ba nhóm lợi ích:
- Mô phỏng lưu lượng phân tán theo địa lý: kiểm chứng hệ thống từ nhiều khu vực, kiểm tra mạng phân phối nội dung và logic biên theo vùng.
- Không bị giới hạn tần suất và tường lửa chặn lưu lượng tổng hợp: lưu lượng đến từ nhiều IP nên giống người dùng thật.
- Phát hiện điểm nghẽn chỉ lộ ra khi yêu cầu đa dạng về địa lý.
Nguồn này còn nêu một ứng dụng đáng chú ý là kiểm tra xem giới hạn tần suất có thật sự gắn với tài khoản hay không, bằng cách gọi một điểm cuối từ rất nhiều IP khác nhau.
Các loại kiểm thử liên quan
Loại kiểm thử |
Mục tiêu |
|---|---|
Kiểm thử tải |
Đo hiệu năng dưới lưu lượng cao điểm dự kiến |
Kiểm thử chịu tải |
Đẩy hệ thống vượt giới hạn để tìm điểm gãy |
Kiểm thử hiệu năng |
Đánh giá tốc độ, khả năng mở rộng và độ tin cậy |
Kiểm thử khả năng phục hồi |
Xem hệ thống xử lý sự cố vùng và chuyển đổi dự phòng ra sao |
Phân biệt proxy và bộ cân bằng tải
Decodo giải thích bộ cân bằng tải phân phối yêu cầu tới các máy chủ phía sau, còn proxy thay đổi nơi lưu lượng xuất phát. Hai thứ nằm ở hai đầu khác nhau của bài kiểm thử.
Hiểu đúng vai trò của proxy giúp anh em thiết kế kịch bản kiểm thử có ý nghĩa.
Nguyên tắc pháp lý khi dùng proxy cho load testing JMeter
Kiểm thử tải tạo ra lưu lượng lớn. Nếu nhắm sai đích, nó không khác gì một cuộc tấn công.
Chỉ kiểm thử hệ thống của mình
Decodo nêu rõ anh em có thể mô phỏng tình huống quá tải trên chính hệ thống của mình cho mục đích kiểm thử, và phải tuân theo quy định của tổ chức cùng pháp luật trước khi thực hiện.
ProxyVN chỉ hỗ trợ việc kiểm thử trên hệ thống thuộc quyền sở hữu của anh em hoặc đã có văn bản cho phép của chủ hệ thống. Gửi tải tới hệ thống của người khác là hành vi vi phạm pháp luật.
Thông báo cho các bên liên quan
- Nhà cung cấp hạ tầng: nhiều dịch vụ đám mây yêu cầu báo trước khi kiểm thử tải lớn.
- Nhà cung cấp mạng phân phối nội dung và tường lửa: để lưu lượng kiểm thử không bị xử lý như tấn công.
- Nhà cung cấp proxy: xác nhận gói dịch vụ cho phép mục đích này và đủ băng thông.
- Đội vận hành nội bộ: tránh báo động giả.
Ưu tiên môi trường thử nghiệm
Anh em nên chạy trên môi trường thử nghiệm có cấu hình giống môi trường thật. Nếu buộc phải chạy trên hệ thống thật, hãy chọn khung giờ thấp điểm và có sẵn phương án dừng.
Một bài kiểm thử tải tốt trả lời được câu hỏi hệ thống chịu được bao nhiêu. Một bài kiểm thử tải thiếu kiểm soát tự biến thành sự cố.
Tuân thủ các nguyên tắc này bảo vệ cả hệ thống lẫn uy tín của anh em.
Chọn loại IP làm proxy cho load testing JMeter
Loại proxy ảnh hưởng tới độ sát thực và chi phí của bài kiểm thử.
Proxy dân cư
Trong ví dụ của ProxyScrape, một trang thương mại điện tử bị chậm vào giờ cao điểm đã dùng JMeter với proxy dân cư để mô phỏng hàng nghìn người dùng từ nhiều địa điểm. Bài kiểm thử chỉ ra việc hiển thị hình ảnh là điểm nghẽn.
IP dân cư là địa chỉ của người dùng thật, nên các lớp bảo vệ xử lý chúng như khách truy cập thông thường. Đây là lựa chọn sát thực nhất.
Proxy datacenter
Nhóm này có tốc độ cao, độ trễ thấp và chi phí thấp. Theo bài viết của ProxyScrape về proxy cho kiểm thử phần mềm, proxy datacenter phù hợp với các tác vụ cần tốc độ.
Nếu mục tiêu là đo sức chịu của ứng dụng thay vì đo phản ứng của lớp bảo vệ, datacenter là lựa chọn kinh tế. Độ trễ thấp của proxy cũng ít làm nhiễu số đo.
Bảng so sánh
Tiêu chí |
Dân cư |
Datacenter |
|---|---|---|
Độ sát với người dùng thật |
Cao |
Trung bình |
Độ trễ cộng thêm |
Cao hơn, dao động |
Thấp, ổn định |
Chi phí |
Tính theo dung lượng, cao hơn |
Tính theo IP, thấp hơn |
Phân bố địa lý |
Rộng, tới cấp thành phố |
Theo vị trí trung tâm dữ liệu |
Phù hợp |
Kiểm thử phân tán theo vùng, kiểm tra lớp bảo vệ |
Đo công suất ứng dụng, khối lượng lớn |
Ước tính băng thông
Kiểm thử tải tiêu tốn dung lượng rất nhanh. Decodo niêm yết proxy dân cư từ khoảng 2,75 tới 4 USD mỗi gigabyte tùy gói.
Anh em lấy kích thước trung bình của một phản hồi nhân với tổng số yêu cầu để ước tính. Với khối lượng lớn, gói không giới hạn băng thông tính theo IP thường hợp lý hơn. Bài nên mua proxy theo port hay băng thông phân tích kỹ.
Số kết nối đồng thời
Bài kiểm thử mở hàng trăm kết nối cùng lúc. Anh em xác nhận với nhà cung cấp về giới hạn kết nối đồng thời của gói trước khi chạy.
Chọn loại proxy theo câu hỏi cần trả lời giúp kết quả đo có giá trị sử dụng.
Cấu hình proxy cho load testing JMeter trên giao diện
Phần này đi theo các bước của ProxyScrape. Anh em thay địa chỉ proxy và trang đích bằng thông tin của mình.

Tạo Thread Group và HTTP Request
Cài đặt và khởi động
Tải JMeter từ trang tải về chính thức của Apache. Sau khi giải nén, anh em vào thư mục bin và chạy tệp jmeter.bat trên Windows.
JMeter cần Java cài sẵn trên máy. Giao diện đồ họa chỉ nên dùng để dựng và chạy thử kịch bản, không dùng cho bài kiểm thử lớn.
Tạo Thread Group
- Nhấp chuột phải vào Test Plan.
- Chọn Add, Threads (Users), rồi Thread Group.
- Thiết lập các tham số theo bảng sau.
Tham số |
Ý nghĩa |
Ví dụ |
|---|---|---|
Number of Threads |
Số người dùng mô phỏng |
10 |
Ramp-up Period |
Thời gian để khởi động hết số luồng, tính bằng giây |
1 |
Loop Count |
Số lần mỗi luồng lặp lại kịch bản |
1 |
Anh em có thể bật thêm bộ lập lịch để giới hạn thời gian chạy.
Thêm HTTP Request
- Nhấp chuột phải vào Thread Group.
- Chọn Add, Sampler, rồi HTTP Request.
- Ở ô Server Name or IP, nhập tên miền đích, không kèm phần giao thức.
- Ở ô Path, nhập đường dẫn, dùng dấu gạch chéo cho trang chủ.
Mỗi trang cần kiểm thử là một HTTP Request riêng.
Nhập proxy trong thẻ Advanced
Trong HTTP Request, anh em mở thẻ Advanced và điền phần Proxy Server:
- Scheme: http.
- Server Name or IP: địa chỉ máy chủ proxy.
- Port Number: cổng của proxy.
- Username và Password: nếu proxy yêu cầu xác thực.
Để áp dụng cho mọi yêu cầu, anh em thêm phần tử HTTP Request Defaults và nhập proxy tại đó thay vì nhập ở từng yêu cầu.
Thêm Listener và chạy
- Nhấp chuột phải vào Thread Group, chọn Add, Listener.
- Chọn View Results Tree để xem kết quả từng yêu cầu.
- Bấm nút mũi tên màu xanh để chạy.
View Results Tree giúp kiểm tra kịch bản có đúng không. Anh em gửi thử một yêu cầu tới trang trả về IP để xác nhận lưu lượng đi qua proxy.
Dựng xong kịch bản trên giao diện, bước tiếp theo là chạy bằng dòng lệnh.
Chạy proxy cho load testing JMeter bằng dòng lệnh
Bài kiểm thử thật nên chạy ở chế độ không giao diện để tiết kiệm tài nguyên. Các tham số dưới đây là của JMeter, ProxyVN trình bày như ví dụ triển khai chung.
Lệnh cơ bản
jmeter -n -t ke-hoach.jmx -l ket-qua.jtl
Tham số n bật chế độ không giao diện, t chỉ tệp kế hoạch và l chỉ tệp ghi kết quả.
Thêm proxy qua tham số
jmeter -n -t ke-hoach.jmx -l ket-qua.jtl -H proxy-host -P 8080 -u USERNAME -a PASSWORD
Tham số |
Ý nghĩa |
|---|---|
-H |
Địa chỉ máy chủ proxy |
-P |
Cổng proxy |
-u |
Tên đăng nhập proxy |
-a |
Mật khẩu proxy |
-N |
Danh sách máy chủ không đi qua proxy |
Proxy đặt bằng tham số áp dụng cho toàn bộ bài kiểm thử. Giá trị nhập trong thẻ Advanced của từng yêu cầu sẽ được ưu tiên hơn.
Loại trừ máy chủ nội bộ
jmeter -n -t ke-hoach.jmx -l ket-qua.jtl -H proxy-host -P 8080 -N "localhost|*.noibo.vn"
Các mục trong danh sách ngăn cách bằng dấu gạch đứng. Lệnh gọi tới dịch vụ nội bộ sẽ đi thẳng.
Xuất báo cáo
jmeter -n -t ke-hoach.jmx -l ket-qua.jtl -e -o bao-cao
Tham số e và o yêu cầu JMeter tạo bảng điều khiển dạng trang web trong thư mục chỉ định sau khi chạy xong. Thư mục này phải trống hoặc chưa tồn tại.
Lưu ý về bảo mật
Mật khẩu đặt trên dòng lệnh có thể bị lưu trong lịch sử lệnh. Trên máy dùng chung, anh em nên dùng proxy xác thực bằng IP hoặc đọc mật khẩu từ biến môi trường.
Bài xác thực proxy bằng IP whitelist hay user password so sánh hai cách.
Dòng lệnh là cách chạy tiêu chuẩn cho mọi bài kiểm thử có quy mô.
Xoay nhiều proxy cho load testing JMeter
Một proxy duy nhất vẫn là một IP. Để mô phỏng nhiều nguồn, anh em cần nhiều địa chỉ.

Xoay nhiều proxy bằng tệp CSV
Cách một: cổng xoay của nhà cung cấp
Đây là cách đơn giản nhất. Anh em nhập một địa chỉ cổng xoay, nhà cung cấp tự đổi IP sau mỗi kết nối.
JMeter mặc định giữ kết nối mở giữa các yêu cầu. Để mỗi yêu cầu nhận IP mới, anh em bỏ chọn Use KeepAlive trong HTTP Request. Việc này làm tăng chi phí thiết lập kết nối, nên cần tính tới khi đọc số đo.
Cách hai: danh sách proxy trong tệp CSV
Anh em tạo tệp chứa danh sách proxy, mỗi dòng một địa chỉ:
proxyHost,proxyPort
203.0.113.10,8080
203.0.113.11,8080
203.0.113.12,8080
Sau đó cấu hình trong JMeter:
- Nhấp chuột phải vào Thread Group, chọn Add, Config Element, CSV Data Set Config.
- Ở ô Filename nhập đường dẫn tệp.
- Để Variable Names là proxyHost,proxyPort.
- Đặt Recycle on EOF là True và Sharing mode là All threads.
- Trong thẻ Advanced của HTTP Request, nhập ${proxyHost} vào ô máy chủ và ${proxyPort} vào ô cổng.
Mỗi luồng đọc một dòng ở mỗi vòng lặp, nên các người dùng mô phỏng đi qua các proxy khác nhau.
Cách ba: phân bổ theo quốc gia
Thêm cột quốc gia vào tệp CSV và sắp xếp tỷ lệ dòng theo phân bố người dùng thật. Nếu sáu phần mười khách hàng ở Việt Nam, sáu phần mười số dòng nên là proxy Việt Nam.
Cách này cho ra bài kiểm thử phản ánh đúng cơ cấu lưu lượng. Bài geo-targeting proxy là gì giải thích cách chọn vị trí.
Giữ phiên cho kịch bản có đăng nhập
Kịch bản gồm đăng nhập, thêm giỏ hàng và thanh toán cần một IP cho cả chuỗi. Anh em dùng proxy giữ phiên cố định và gán mỗi luồng một proxy, không đổi giữa chừng.
Bài sticky session proxy là gì hướng dẫn thiết lập.
Chọn cách xoay phù hợp với kịch bản giúp bài kiểm thử vừa sát thực vừa cho số đo đáng tin.
Đọc kết quả khi dùng proxy cho load testing JMeter
Proxy thêm một chặng vào đường đi của yêu cầu. Anh em cần tính tới điều đó khi diễn giải số liệu.

Đọc kết quả kiểm thử
Ba chỉ số chính
ProxyScrape nhắc tới ba chỉ số:
- Thông lượng: số yêu cầu hệ thống xử lý được trong một đơn vị thời gian.
- Độ trễ: thời gian chờ phản hồi.
- Tỷ lệ lỗi: phần trăm yêu cầu thất bại.
Anh em nên xem thêm các mức phân vị của thời gian phản hồi, vì giá trị trung bình che mất những yêu cầu chậm nhất.
Tách độ trễ của proxy
Thời gian phản hồi đo được gồm cả chặng tới proxy. Anh em chạy một bài nhỏ không qua proxy và một bài qua proxy với cùng tải thấp để lấy chênh lệch làm mốc.
Proxy datacenter gần hệ thống đích cho độ trễ cộng thêm nhỏ và ổn định. Proxy dân cư dao động nhiều hơn, phản ánh đúng trải nghiệm của người dùng ở xa.
Phân biệt lỗi của proxy và lỗi của hệ thống
Mã lỗi |
Nguồn gốc thường gặp |
Ý nghĩa |
|---|---|---|
407 |
Proxy |
Sai thông tin xác thực proxy |
502, 504 từ proxy |
Proxy |
Proxy quá tải hoặc không tới được đích |
429 |
Hệ thống đích |
Chạm giới hạn tần suất |
500, 503 |
Hệ thống đích |
Ứng dụng quá tải hoặc lỗi |
Hết thời gian chờ kết nối |
Cả hai |
Cần đối chiếu nhật ký hai bên |
Nếu không tách hai nhóm này, anh em có thể kết luận sai rằng ứng dụng yếu trong khi nguyên nhân là proxy quá tải. Bài 502 bad gateway là gì và 504 gateway timeout giải thích các mã này.
Theo dõi phía máy chủ
Số liệu của JMeter chỉ là góc nhìn từ phía máy khách. Anh em cần xem đồng thời mức dùng bộ xử lý, bộ nhớ, cơ sở dữ liệu và nhật ký của ứng dụng để tìm đúng điểm nghẽn.
Máy phát tải cũng có giới hạn
Một máy chạy JMeter chỉ tạo được một lượng tải nhất định. Khi máy phát tải quá tải, số đo sẽ sai. Với bài lớn, anh em chia ra nhiều máy phát.
Diễn giải cẩn thận giúp bài kiểm thử dẫn tới đúng việc cần tối ưu.
Kiểm thử ngoài tải với proxy cho load testing JMeter
Hạ tầng proxy dùng cho kiểm thử tải còn phục vụ nhiều loại kiểm thử khác. ProxyScrape liệt kê các nhóm chính.
Kiểm thử bản địa hóa
Xác minh nội dung hiển thị đúng theo từng khu vực, gồm loại tiền, ngôn ngữ và chương trình khuyến mãi. Proxy dân cư tại đúng quốc gia cho kết quả sát nhất.
Kiểm thử hiệu năng theo địa lý
Đo tốc độ tải và khả năng truy cập của website từ nhiều địa điểm. Kết quả cho biết khu vực nào cần thêm điểm phân phối nội dung.
Giám sát lưu lượng HTTP và HTTPS
Ghi lại, phân tích và chỉnh sửa lưu lượng giữa ứng dụng và máy chủ bằng proxy gỡ lỗi. Bài Charles Proxy là gì của ProxyVN giới thiệu công cụ này.
Kiểm thử bảo mật
Xác nhận dữ liệu nhạy cảm được mã hóa trước khi gửi đi. Đây là bước không nên bỏ qua trước khi phát hành.
Công cụ khác ngoài JMeter
Decodo cho biết proxy của họ làm việc với JMeter, K6, Locust, Gatling và mọi công cụ hỗ trợ HTTP, HTTPS hoặc SOCKS5. Nguyên tắc cấu hình tương tự nhau ở các công cụ này.
Đầu tư một lần cho hạ tầng proxy, anh em dùng được cho cả chu trình kiểm thử.
Để có dải IP cho kịch bản JMeter, anh em mua proxy theo ngày tại ProxyVN, thuê càng dài giá càng tốt.
Tiêu chí chọn nhà cung cấp proxy cho load testing JMeter
Kiểm thử tải đặt ra yêu cầu khắt khe về năng lực của proxy.
- Cho phép số kết nối đồng thời lớn: xác nhận giới hạn trước khi chạy.
- Băng thông đủ lớn hoặc không giới hạn.
- Có IP tại các quốc gia của người dùng thật.
- Độ trễ thấp và ổn định: để không làm nhiễu số đo.
- Có cổng xoay và danh sách IP tĩnh: phục vụ cả hai cách xoay.
- Chấp thuận mục đích kiểm thử tải và có hỗ trợ kỹ thuật trong lúc chạy.
ProxyVN duy trì đường truyền ổn định, hạn chế mất kết nối giữa chừng. Đội kỹ thuật hỗ trợ 24/24, anh em nên trao đổi trước về quy mô bài kiểm thử để được tư vấn gói phù hợp.
Tóm lại, anh em chỉ kiểm thử hệ thống của mình, dựng kịch bản trên giao diện rồi chạy bằng dòng lệnh, xoay proxy theo phân bố người dùng thật và tách lỗi của proxy khỏi lỗi của ứng dụng khi đọc kết quả. Cần tư vấn, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam để chọn proxy cho load testing JMeter.