Kiểm tra tải là gì? Trong phần Tải tối đa: Tổng quan về các chương trình kiểm tra tải máy chủ Web. Xác định tốc độ phản hồi tối đa

Phần mềm mới và các sản phẩm công nghệ cao khác thường xuyên xuất hiện trên thị trường CNTT hiện đại. Việc xác định mức độ so sánh để giải quyết các vấn đề cụ thể, ở mức độ nào và liệu chúng có đủ an toàn để sử dụng chỉ có thể ở chế độ kiểm tra tải - một dịch vụ được cung cấp bởi Công ty Kỹ thuật Getbug.

Bài kiểm tra về áp lực(Tiếng Anh) Kiểm tra tải) - quá trình cố tình tải một hệ thống bằng cách gửi nhiều yêu cầu đến chính hệ thống hoặc thiết bị đó, nhằm xác định các chỉ số hiệu suất, thời gian phản hồi và kiểm tra việc tuân thủ các yêu cầu được đưa ra cho hệ thống hoặc thiết bị riêng lẻ này

Tải các giai đoạn thử nghiệm

  • Phát triển và phê duyệt các mô hình tải. Đối với mô hình, các hoạt động quan trọng đối với loại thử nghiệm này sẽ được chọn và cường độ thực hiện chúng trong thử nghiệm được xác định. Cấu hình tải được xác định nếu ứng dụng đang thử nghiệm có các mẫu hành vi khác nhau. Điểm tải được tính toán.
  • Đối với các hoạt động mô phỏng, các tập lệnh tải được phát triển và các nhóm dữ liệu cần thiết được tạo.
  • Các kịch bản thực thi tập lệnh được phát triển tương ứng với cấu hình mô hình tải.
  • Hoạt động của các tập lệnh trong các kịch bản được kiểm tra. Cần phải thực thi từng tập lệnh có trong tập lệnh bằng cách sử dụng ít nhất một số người dùng ảo trong nhóm để loại bỏ các lỗi ảnh hưởng lẫn nhau của các tập lệnh với nhau. Bạn cũng có thể tìm thấy các tập lệnh có mối tương quan chưa được thực hiện tốt ở đây.

Tải thử nghiệm trực tuyến

Tại sao bạn cần kiểm tra tải trang web? Tải trọng trên máy chủ lưu trữ hoặc máy chủ trang web của bạn ngày càng tăng và có thể tạo ra tải trọng quan trọng đối với hoạt động của trang web. Chúng tôi thực hiện kiểm tra sức chịu đựng để ngăn chặn những vấn đề như vậy bằng cách sử dụng bài kiểm tra sức chịu đựng toàn diện. Hoạt động chính của công ty là nhằm giám sát chất lượng của các sản phẩm công nghệ cao được phát triển trong suốt vòng đời phát triển của chúng. Các dịch vụ theo yêu cầu bao gồm các vấn đề về nghiên cứu thử nghiệm sự tương tác giữa con người và sản phẩm phần mềm, thử nghiệm tải chức năng và thử nghiệm bảo mật phần mềm.

C ăn thử tải:

  1. Đánh giá hiệu quả và khả năng hoạt động của ứng dụng ở giai đoạn phát triển và chuyển sang vận hành;
  2. Đánh giá hiệu suất và chức năng của ứng dụng ở giai đoạn phát hành bản phát hành mới;
  3. Tối ưu hóa hiệu suất ứng dụng, điều chỉnh máy chủ và tối ưu hóa mã
  4. Chọn cấu hình phần cứng (nền tảng phần mềm) và máy chủ phù hợp cho một ứng dụng nhất định

Thiết bị của băng ghế thử nghiệm phải phù hợp với cấu hình sản xuất càng sát càng tốt. Đặc biệt nếu các quyết định kinh doanh được đưa ra dựa trên thời gian hoạt động đạt được nhờ thử nghiệm. Nếu chúng ta đang nói về việc tối ưu hóa một ứng dụng, thì việc kết hợp cấu hình của băng ghế thử nghiệm và ứng dụng công nghiệp không còn phù hợp nữa. Để giám sát các máy chủ thử nghiệm, bạn phải có quyền truy cập vào các máy chủ có quyền sử dụng các tiện ích cần thiết, ví dụ: MS Windows Performance cho MS Windows hoặc sar, iostat, vmstat cho hệ điều hành dựa trên unix.

Công cụ và kịch bản kiểm tra tải

Lần chạy thử nghiệm đầu tiên là lần chạy thử và cho phép bạn hiểu toàn bộ hoạt động của hệ thống: hoạt động của ứng dụng và phần cứng. Cần bắt đầu thử nghiệm từ các điểm tải có tải thấp hơn, di chuyển khi tải tăng từ thấp lên cao. Trong quá trình thử nghiệm, số lượng điểm tải có thể thay đổi và số lượng người dùng ảo vào một điểm tải cụ thể có thể thay đổi. Kết quả kiểm tra phải nhất quán về mặt logic và khi tải tăng thì kết quả về thời gian thực hiện các thao tác và tải của thiết bị kiểm tra cũng phải thay đổi tương ứng. Nếu kết quả tốt hơn ở điểm tải có tải cao hơn, thì thử nghiệm như vậy phải được thực hiện lại để hiểu lý do dẫn đến hiện tượng “bật lên” như vậy. Có thể các điểm tải không được thiết kế chính xác và bạn có thể cần phải tăng kích thước “bước” để thực sự cảm nhận được mức tải tăng lên. Tập hợp các thử nghiệm và kết quả phải đủ để cho phép phân tích các tắc nghẽn và đưa ra kết luận về hiệu suất và tính ổn định của ứng dụng đang được thử nghiệm.

Kiểm tra năng suất(Kiểm tra năng suất)

Mục đích của kiểm thử hiệu năng là xác định khả năng mở rộng của ứng dụng đang tải:

  • thời gian thực hiện các hoạt động được đo ở tốc độ thực hiện nhất định
  • số lượng người dùng đồng thời làm việc với ứng dụng được xác định
  • ranh giới của hiệu suất chấp nhận được được xác định khi tải tăng
  • nghiên cứu hiệu suất được thực hiện ở mức tải cao, cực đoan và căng thẳng

Kiểm tra độ ổn định (Kiểm tra độ ổn định / độ tin cậy)

Kiểm tra độ ổn định (độ tin cậy) kiểm tra chức năng của ứng dụng trong quá trình kiểm tra dài hạn (nhiều giờ) với mức tải trung bình. Thời gian thực hiện các hoạt động đóng vai trò thứ yếu và chiếm vị trí đầu tiên do không bị rò rỉ bộ nhớ, máy chủ khởi động lại khi đang tải và các khía cạnh khác ảnh hưởng cụ thể đến sự ổn định của hoạt động.

Bài kiểm tra về áp lực (Bài kiểm tra về áp lực)

Kiểm tra căng thẳng kiểm tra hiệu suất của toàn bộ ứng dụng hoặc hệ thống trong điều kiện căng thẳng. Giúp đánh giá khả năng hệ thống trở lại bình thường sau khi dỡ bỏ tải. Tải có thể là sự gia tăng cường độ hoạt động lên giá trị rất cao hoặc thay đổi khẩn cấp trong cấu hình máy chủ. Một nhiệm vụ cụ thể của stress test có thể là đánh giá sự suy giảm hiệu suất.

Kiểm tra khối lượng (Kiểm tra khối lượng)

Kiểm tra khối lượng cho phép bạn đánh giá hiệu suất khi khối lượng dữ liệu trong cơ sở dữ liệu ứng dụng tăng lên:

  • thời gian thực hiện các hoạt động được đo trong quá trình thực hiện chuyên sâu đồng thời
  • xác định số lượng người dùng đồng thời làm việc với ứng dụng

Theo quy định của kỹ thuật hệ thống hiện đại, quy trình kiểm thử không được là giai đoạn cuối cùng trong quá trình tạo ra phần mềm. Những sai sót trong quá trình tạo ra những sản phẩm đó không được xác định ở giai đoạn xuất hiện sẽ tích lũy, do đó việc phát hiện và loại bỏ kịp thời chúng là rất quan trọng. Bản thân quy trình thử nghiệm phải được áp dụng không chỉ cho các chương trình mà còn cho các giao diện hoặc thiết bị điện tử.

Kiểm tra chức năng của giao diện người dùng nhằm mục đích thiết lập mức độ thích ứng của nó với các yêu cầu do nhà phát triển đặt ra. Điều này áp dụng như nhau cho các ứng dụng Internet và các trang web. Bài kiểm tra dựa trên công thái học, xác định sự tương tác giữa con người và máy tính, tính đơn giản và khả năng phản hồi của điều khiển cũng như tốc độ làm quen với các chức năng của sản phẩm phần mềm mới. Đây là những đặc điểm chính, giá trị của nó quyết định việc tiết kiệm thời gian và dễ sử dụng.

Công ty thực hiện thử nghiệm theo nhiều giai đoạn, bao gồm:
phân tích các yêu cầu mà các nhà phát triển đưa ra đối với sản phẩm của họ và tính chính xác của chúng;
xây dựng danh sách kiểm tra;
thực hiện các thủ tục kiểm tra;
xác định tính đầy đủ của việc tuân thủ các yêu cầu đã nêu đối với kết quả thử nghiệm;
tạo báo cáo về sự thành công của thử nghiệm hoặc về các vi phạm được xác định trong hoạt động của sản phẩm phần mềm.

Mục đích của việc kiểm tra mức độ bảo mật của sản phẩm là để xác định tính dễ bị tổn thương của sản phẩm trước virus hoặc các cuộc tấn công của hacker bên ngoài. Tính chính xác và độ tin cậy của hoạt động của cả chương trình và thiết bị phụ thuộc trực tiếp vào chỉ số này. Người dùng cuối phải được đảm bảo rằng việc cài đặt một sản phẩm mới sẽ không làm giảm hiệu suất hoặc ảnh hưởng đến tính toàn vẹn của hệ thống. Bảo mật cũng liên quan đến tính bảo mật và tính sẵn sàng thấp. Tính toàn vẹn của hệ thống được đánh giá bằng khả năng tự phục hồi sau khi bị xâm nhập từ bên ngoài hoặc bị ảnh hưởng trái phép.

Chúng tôi thực hiện nhiều công việc ở mức độ phức tạp và có phòng thí nghiệm, các chuyên gia có trình độ và các công cụ riêng để phát triển và tiến hành công việc thử nghiệm.

Bài kiểm tra về áp lực(eng. kiểm tra tải) - một loại kiểm tra hiệu suất, thu thập các chỉ số và xác định hiệu suất và thời gian phản hồi của hệ thống hoặc thiết bị phần mềm và phần cứng để đáp ứng yêu cầu bên ngoài nhằm thiết lập sự tuân thủ các yêu cầu đối với một hệ thống (thiết bị) nhất định ).

Để nghiên cứu thời gian đáp ứng của hệ thống ở mức tải cao hoặc cao điểm, kiểm tra sức chịu đựng được thực hiện, trong đó tải được tạo ra trên hệ thống vượt quá các tình huống sử dụng thông thường. Không có ranh giới rõ ràng giữa kiểm tra tải và kiểm tra sức chịu đựng, nhưng không nên nhầm lẫn các khái niệm này vì các loại kiểm tra này trả lời các câu hỏi kinh doanh khác nhau và sử dụng các phương pháp khác nhau.

Kiểm tra tải phần mềm

Thuật ngữ Bài kiểm tra về áp lực có thể được sử dụng theo nhiều nghĩa khác nhau trong môi trường kiểm thử phần mềm chuyên nghiệp. Nói chung, nó đề cập đến thực tiễn mô phỏng việc sử dụng ứng dụng dự kiến ​​bằng cách mô phỏng nhiều người dùng cùng một lúc. Do đó, thử nghiệm như vậy phù hợp nhất với các hệ thống nhiều người dùng, thường sử dụng kiến ​​trúc máy khách-máy chủ (ví dụ: máy chủ web). Tuy nhiên, các loại hệ thống phần mềm khác có thể được kiểm tra theo cách tương tự. Ví dụ: một trình soạn thảo văn bản hoặc đồ họa có thể được tạo để đọc một tài liệu rất lớn; và gói tài chính - tạo báo cáo dựa trên dữ liệu trong vài năm. Việc kiểm tra tải được thiết kế phù hợp nhất sẽ cho kết quả chính xác hơn.

Mục tiêu chính của kiểm tra tải là tạo ra một tải nhất định dự kiến ​​​​trên hệ thống (ví dụ: thông qua người dùng ảo) và thường sử dụng phần mềm và phần cứng giống hệt nhau để quan sát hiệu suất của hệ thống.

Ví dụ 1:

Dịch vụ web có chức năng giỏ hàng được thiết kế cho 100 người dùng đồng thời tuân theo một kịch bản nhất định (các hành động được chỉ định theo tỷ lệ cụ thể):

  • 25 người dùng xem một mục và đăng xuất.
  • 25 người dùng thêm sản phẩm vào giỏ hàng, thanh toán và đăng xuất khỏi hệ thống.
  • 25 người dùng sử dụng chức năng trả lại sản phẩm và đăng xuất.
  • 25 người dùng đăng nhập và không hiển thị hoạt động nào.

Trong trường hợp này, kiểm tra tải phải mô phỏng kịch bản điển hình khi làm việc với dịch vụ web được mô tả ở trên để đảm bảo rằng hệ thống đã sẵn sàng đi vào sản xuất. Trong trường hợp này, các chỉ số hiệu suất của toàn bộ hệ thống hoặc từng nút của hệ thống nói riêng có thể được lấy để phân tích.

Lý tưởng nhất, tiêu chí cho sự thành công của thử nghiệm tải là các yêu cầu về hiệu năng hệ thống, được xây dựng và ghi lại ở giai đoạn phát triển các yêu cầu chức năng cho hệ thống trước khi lập trình các giải pháp kiến ​​trúc chính. Tuy nhiên, thường xảy ra trường hợp những yêu cầu đó không được xây dựng rõ ràng hoặc hoàn toàn không được xây dựng. Trong trường hợp này, lần kiểm tra tải đầu tiên sẽ là sự thử nghiệm(Thử nghiệm tải thăm dò bằng tiếng Anh) và dựa trên các giả định hợp lý về tải dự kiến ​​và mức tiêu thụ tài nguyên phần cứng.

Một trong những cách tiếp cận tối ưu để sử dụng thử nghiệm tải để đo hiệu suất hệ thống là thử nghiệm ở giai đoạn phát triển ban đầu. Kiểm tra tải ở giai đoạn sẵn sàng đầu tiên của một giải pháp kiến ​​trúc nhằm xác định khả năng tồn tại của nó được gọi là thử nghiệm “bằng chứng khái niệm”.

Nguyên tắc cơ bản của kiểm tra tải

Dưới đây là một số thực tế thực nghiệm, nguyên tắc chung được sử dụng trong kiểm thử hiệu năng nói chung và có thể áp dụng cho bất kỳ loại kiểm thử hiệu năng nào (cụ thể là kiểm thử tải).

1. Tính duy nhất của yêu cầu

Ngay cả khi đã tạo ra một kịch bản thực tế để làm việc với hệ thống dựa trên số liệu thống kê về việc sử dụng nó, cần phải hiểu rằng sẽ luôn có những trường hợp ngoại lệ đối với kịch bản này.

Khi ví dụ 1đây có thể là người dùng truy cập các trang duy nhất của một dịch vụ web khác với tất cả các trang khác.

2. Thời gian phản hồi của hệ thống

Nói chung, thời gian đáp ứng của hệ thống tuân theo hàm phân phối chuẩn.

Đặc biệt, điều này có nghĩa là nếu có đủ số lượng phép đo, có thể xác định xác suất mà hệ thống sẽ phản hồi yêu cầu trong một khoảng thời gian cụ thể.

3. Sự phụ thuộc của thời gian đáp ứng của hệ thống vào mức độ phân bố của hệ thống này.
QUA Tên của nhà sản xuất Bình luận
OpenSTA "Kiến trúc kiểm tra hệ thống mở" Phần mềm miễn phí để kiểm tra tải/căng thẳng, được cấp phép theo GNU GPL. Sử dụng kiến ​​trúc ứng dụng phân tán dựa trên CORBA. Đã có phiên bản Windows, mặc dù có vấn đề về tương thích với Windows Vista. Hỗ trợ đã kết thúc vào năm 2007.
Trình kiểm tra hiệu suất hợp lý của IBM IBM Phần mềm dựa trên môi trường phát triển Eclipse cho phép bạn tạo tải lớn và đo thời gian phản hồi cho các ứng dụng có kiến ​​trúc client-server. Yêu cầu cấp phép.
JMeter Dự án Apache Jakarta mã nguồn mở Bộ công cụ đa nền tảng dựa trên Java cho phép bạn thực hiện kiểm tra tải bằng các kết nối JDBC / FTP / LDAP / SOAP / JMS / POP3 / HTTP / TCP. Cho phép tạo một số lượng lớn yêu cầu từ các máy tính khác nhau và kiểm soát quá trình từ một trong số chúng.
HP LoadRunner HP Một công cụ kiểm tra tải ban đầu được thiết kế để mô phỏng công việc của một số lượng lớn người dùng đồng thời. Cũng có thể được sử dụng để thử nghiệm đơn vị hoặc tích hợp.
Tải hoàn thành SmartBear Một sản phẩm độc quyền cho phép bạn thực hiện kiểm tra tải các ứng dụng web
SilkPerformer Lấy nét vi mô (Borland)
Cuộc vây hãm Phần mềm chó Joe Siege là một tiện ích kiểm tra tải cho các máy chủ web.
Hệ thống nhóm Visual Studio Microsoft Visual Studio cung cấp các công cụ kiểm tra hiệu suất bao gồm kiểm tra tải/đơn vị
QTest định mức
HTTPerf
Tải QA Công ty TNHH Compuware
(Cái) Máy mài
TẢI Web Phần mềm RadView Công cụ kiểm tra tải cho các ứng dụng web và thiết bị di động, bao gồm các bảng web để kiểm tra phân tích hiệu suất. Được sử dụng cho khối lượng công việc quy mô lớn cũng có thể được tạo từ đám mây. được cấp phép.
Yandex.Tank Yandex Một công cụ mô-đun và có thể mở rộng cho phép bạn sử dụng các trình tạo khác nhau trong nội bộ, đặc biệt là JMeter quen thuộc. Đây là một dự án nguồn mở được Yandex xuất bản vào năm 2012.

Các chỉ số hiệu suất chính (số liệu)

Một trong những kết quả thu được trong quá trình kiểm tra tải và được sử dụng để phân tích sâu hơn là các chỉ số hiệu suất ứng dụng. Những cái chính được thảo luận dưới đây.

1. Mức tiêu thụ tài nguyên CPU, %

Một số liệu cho biết bộ xử lý đã dành bao nhiêu thời gian trong một khoảng thời gian cụ thể nhất định để tính toán cho quy trình đã chọn. Trong các hệ thống hiện đại, một yếu tố quan trọng là khả năng một tiến trình chạy trong nhiều luồng để bộ xử lý có thể thực hiện các phép tính song song. Phân tích lịch sử tiêu thụ tài nguyên bộ xử lý có thể giải thích tác động đến hiệu suất hệ thống tổng thể của các luồng dữ liệu đã xử lý, cấu hình hệ điều hành và ứng dụng, tính toán đa luồng và các yếu tố khác.

2. Mức tiêu thụ RAM, MB

Một số liệu hiển thị dung lượng bộ nhớ được sử dụng bởi một ứng dụng. Bộ nhớ đã sử dụng được chia thành nhiều loại:

  • Ảo - lượng không gian địa chỉ ảo mà tiến trình sử dụng. Khối lượng này ngụ ý cả việc sử dụng dung lượng ổ đĩa và RAM thích hợp. Hệ thống bộ nhớ ảo đảm bảo rằng các luồng trong một tiến trình không thể truy cập vào bộ nhớ do một tiến trình khác sở hữu.
  • Riêng tư - lượng không gian địa chỉ bị chiếm bởi một tiến trình và không được chia sẻ với các tiến trình khác.
  • Bộ làm việc - một tập hợp các trang bộ nhớ được quy trình sử dụng gần đây. Khi có đủ bộ nhớ trống, các trang vẫn được giữ nguyên ngay cả khi chúng không được sử dụng. Khi còn ít bộ nhớ trống, các trang đã sử dụng sẽ được chuyển từ RAM sang đĩa cứng (hoặc thiết bị lưu trữ khác như bộ nhớ Flash), giải phóng RAM để tải các trang bộ nhớ đang hoạt động khác.
  • Shared - dung lượng bộ nhớ vật lý được sử dụng bởi tiến trình, có thể được chia sẻ với các tiến trình khác. Mặc dù bộ nhớ được cấp phát cho một tiến trình phải được cách ly nhưng đôi khi các tiến trình cần có khả năng trao đổi thông tin. Bộ nhớ dùng chung là cách nhanh nhất để liên lạc giữa các tiến trình.

Khi một ứng dụng chạy, bộ nhớ chứa đầy các tham chiếu đến các đối tượng, nếu không được sử dụng, có thể được dọn sạch bằng một quy trình tự động đặc biệt gọi là trình thu gom rác. Thời gian để bộ xử lý xóa bộ nhớ theo cách này có thể rất lớn khi một tiến trình đã chiếm hết bộ nhớ khả dụng (trong Java, cái gọi là “GC đầy đủ liên tục”) hoặc khi một tiến trình có lượng lớn bộ nhớ được phân bổ cần phải được xóa. Trong thời gian cần xóa bộ nhớ, quyền truy cập của một tiến trình vào các trang của bộ nhớ được phân bổ có thể bị chặn, điều này có thể ảnh hưởng đến thời gian xử lý cuối cùng cho tiến trình đó.

3. Tiêu thụ tài nguyên mạng

Số liệu này không liên quan trực tiếp đến hiệu suất ứng dụng nhưng nó có thể chỉ ra giới hạn hiệu suất của toàn bộ hệ thống.

Ví dụ 3:

Ứng dụng máy chủ, xử lý yêu cầu của người dùng, trả lại luồng video cho anh ta bằng kênh mạng 2 megabit. Yêu cầu nêu rõ rằng máy chủ phải xử lý đồng thời 5 yêu cầu của người dùng.

Thử nghiệm tải cho thấy máy chủ chỉ có thể cung cấp dữ liệu hiệu quả cho 4 người dùng cùng lúc vì luồng đa phương tiện có tốc độ bit là 500 kilobit. Rõ ràng, việc cung cấp luồng này cho 5 người dùng cùng lúc là không thể do vượt quá băng thông kênh mạng, điều đó có nghĩa là hệ thống không đáp ứng các yêu cầu về hiệu suất đã chỉ định, mặc dù mức tiêu thụ tài nguyên bộ xử lý và bộ nhớ của nó có thể thấp.

4. Làm việc với hệ thống con đĩa (thời gian chờ I/O)

Làm việc với hệ thống con đĩa có thể ảnh hưởng đáng kể đến hiệu suất hệ thống, vì vậy việc thu thập số liệu thống kê về hoạt động của đĩa có thể giúp xác định các điểm nghẽn trong khu vực này. Số lượng đọc hoặc ghi lớn có thể khiến bộ xử lý không hoạt động để chờ dữ liệu được xử lý từ đĩa, dẫn đến mức tiêu thụ CPU tăng và thời gian phản hồi chậm hơn.

5. Thời gian thực hiện truy vấn, ms

Thời gian thực hiện truy vấn ứng dụng vẫn là một trong những chỉ số quan trọng nhất về hiệu suất của hệ thống hoặc ứng dụng. Thời gian này có thể được đo ở phía máy chủ như thước đo thời gian cần thiết để phần phụ trợ xử lý yêu cầu; và về phía khách hàng, như một chỉ báo về tổng thời gian cần thiết để tuần tự hóa/giải tuần tự hóa, chuyển tiếp và xử lý yêu cầu.

Nhóm của chúng tôi đã phải đối mặt với những thiếu sót của các công cụ kiểm tra tải và cuối cùng, nhóm đã quyết định phát triển dịch vụ của riêng mình. Những khó khăn chính:

  • Nếu đây là dịch vụ thì giá quá cao cho một gánh nặng
  • Nếu đây là một tiện ích, kết quả sẽ phụ thuộc vào tốc độ của kênh máy tính/máy chủ nơi thử nghiệm được thực hiện
  • Các truy vấn lặp lại không phản ánh tốc độ thực vì bộ nhớ đệm xảy ra ở nhiều cấp độ khác nhau từ CPU đến cơ sở dữ liệu
Tôi hy vọng rằng “chiếc xe đạp” sẽ thú vị với những người khác - đầu tiên tôi sẽ mô tả những gì đã hoạt động, sau đó chúng ta có thể thảo luận về các tính năng khác.

Những gì đã được thực hiện?

  • Bạn có thể kiểm tra các tác vụ từ danh sách url, tối đa 20 phần
  • Mỗi url có thể chứa một hoặc nhiều tham số ngẫu nhiên được chỉ định bằng hàm $RND
  • Bài kiểm tra được chạy từ nhiều máy chủ, mỗi máy chủ chỉ chạy 8 luồng
  • Việc thử nghiệm có thể được tiến hành từ 5 khu vực AWS - Dublin, Frankfurt, Miền Đông/Tây Hoa Kỳ, Tokyo
  • Chúng tôi sẵn sàng cung cấp các bài kiểm tra miễn phí lên tới 200 chủ đề
Để kiểm tra, hãy mở biểu mẫu, trong đó chúng tôi chỉ ra email, điền URL, chọn số luồng kiểm tra, khu vực và bắt đầu kiểm tra.

*** CẬP NHẬT ***
Tôi thấy rất nhiều cư dân Khabra dũng cảm đặt nhiệm vụ cho 200 chủ đề. Nếu chúng tôi giả sử rằng 1 trang được hiển thị trong 1 giây thì điều này tương ứng với lưu lượng truy cập >100 nghìn khách truy cập mỗi giờ. Các dự án thông thường, bao gồm cả dự án của chúng tôi, sẽ chết vì những thử nghiệm như vậy.

Sau một phút, kết quả của bạn sẽ sẵn sàng (ví dụ: xem kết quả xuất sắc - thử nghiệm example.net). Như bạn có thể thấy, 200 luồng cho phép bạn tạo hơn 1000 yêu cầu mỗi giây - tất cả phụ thuộc vào tốc độ giao tiếp với dịch vụ đang được thử nghiệm, v.v. Trên thực tế, tốc độ phản ứng.

Nếu bạn sẵn sàng khoe kết quả của mình trên trang web của chúng tôi, bạn có thể nhấp vào nút Kết quả công khai. Để hiển thị nó cho đồng nghiệp của bạn, chỉ cần gửi một liên kết.

Kiểm tra cái gì?
Tài nguyên tĩnh, hình ảnh, tập lệnh phải được cung cấp từ CDN. Thật vô nghĩa khi kiểm tra tốc độ tải lên IMHO của họ; bạn chỉ cần kiểm tra tốc độ tải trang tổng thể, chẳng hạn như sử dụng http://tools.pingdom.com/fpt/

Loadme tập trung vào việc kiểm tra mã trang / phương pháp api, v.v... Tất nhiên, có thể kiểm tra nginx phân phối 1x1.gif bằng công cụ này, nhưng không có lợi ích thực tế nào và nginx thậm chí sẽ không khởi động được từ việc này.

Để xác định trang nào bị nghẽn cổ chai, tốt nhất nên sử dụng newrelic. Không giống như các phân tích phổ biến của Google, nó cũng cho phép bạn theo dõi số liệu thống kê về các yêu cầu bot và xây dựng các truy vấn dựa trên số lượng hoạt động trên mỗi trang, cũng như trang nào làm hỏng trải nghiệm người dùng nhiều nhất theo chỉ mục apdex.
Như bạn đã biết, một con ruồi trong thuốc mỡ sẽ làm hỏng một thùng mật ong và nếu ứng dụng của bạn chậm lại ở một số hành động thậm chí tương đối hiếm, điều này có thể ảnh hưởng đến các hoạt động nhẹ phổ biến.

Chuyển hướng hoạt động như thế nào?
Chuyển hướng được thực thi; Chúng tôi tích cực sử dụng chúng để kiểm tra một trong các trang web của chúng tôi, wikiart.org, bằng cách triển khai chức năng “đi tới một bức ảnh ngẫu nhiên” trên đó.

Tại sao việc kiểm tra nhiều URL lại quan trọng?
Để kiểm tra mức độ ảnh hưởng lẫn nhau của các trang nhanh phổ biến và các trang chậm (ví dụ: tìm kiếm)

Tại sao cần có $RND?
Cú pháp là $RND(từ,đến).
Ví dụ: http://someshop.com/search?from=$RND(0,1000)&to=$RND(1000,10000) sẽ tạo các truy vấn tùy ý để tìm kiếm các sản phẩm có giá từ 0 đến 1000 và kết thúc từ 1000 đến 10000. Điều này giúp ước tính sức mạnh tìm kiếm thực sự.
Ví dụ: cửa hàng nổi tiếng của Ukraina Rozetka dành trung bình 5 giây để tìm kiếm điện thoại thông minh ở mức giá ngẫu nhiên:
http://loadme.socialtalents.com/Result/ViewById/56108a645b5f1700481cc21d, một kết quả rất xa so với lý tưởng.
Về cơ bản, Amazon đối phó với nhiệm vụ này tốt hơn - kết quả là một số lỗi đáng kể rất có thể là do bảo vệ ddos ​​​​

Các kế hoạch trong tương lai

Đăng, đặt, xóa yêu cầu
Điều cần thiết chắc chắn là trong kế hoạch.

Ủy quyền
Liệu hỗ trợ cookie có đủ để yêu cầu đầu tiên ghi lại bài kiểm tra của một người dùng ngẫu nhiên (sẽ yêu cầu hỗ trợ từ máy chủ) và công việc tiếp theo sẽ diễn ra thay mặt cho người dùng này không?

Kiểm tra bước
Giả sử bạn chạy một loạt thử nghiệm: 25%, 50%, 75% và 100% và thấy sự khác biệt về tốc độ.


Thay vì số lượng luồng, hãy để người dùng chọn số lượng thao tác mỗi giây mà họ muốn bắt đầu.

Kiểm tra theo lịch định kỳ
Lặp lại bài kiểm tra mỗi ngày/tuần và gửi báo cáo qua email.
Bạn cũng có thể cung cấp một số loại webhook để kích hoạt thử nghiệm hiện có từ mã (ví dụ: sau khi cập nhật)

Cải thiện trực quan hóa thông lượng
Máy chủ có thể đã hoạt động thất thường. Chúng tôi dự định thêm hình ảnh hóa thông lượng máy chủ theo giây.

Xác nhận quyền sở hữu tên miền
Giới hạn không quá 200 đại lý cho mỗi tên miền tồn tại chính xác để đảm bảo rằng không ai ném trang web của người khác vào ddos. Bạn có thể tạo một tên miền phụ khác cho trang web của mình và kiểm tra lại.
Tuy nhiên, trong tương lai, cần phải xác minh tên miền bằng bản ghi CNAME hoặc tệp có tên cụ thể.

Đối thủ cạnh tranh hiện tại
Loadimpact.com - đối với một bài kiểm tra tải thông thường, ít nhất 100 yêu cầu mỗi giây, sẽ cần 1500 cái gọi là “người dùng ảo” - mỗi người trong số họ tải trang 15 giây một lần. Gói này hiện có giá $299 mỗi tháng.

Loader.io là một dịch vụ tuyệt vời, gói trả phí chỉ 99 USD/tháng. Cài đặt URL rất linh hoạt - bạn có thể đặt phương thức, cookie, tiêu đề nhưng chúng tôi không có đủ thử nghiệm ngẫu nhiên.

Khi một ứng dụng web (trang web, dịch vụ) vẫn còn khá non trẻ nhưng lại nhắm đến đối tượng rộng rãi thì rất khó hiểu cần phải có phần cứng máy chủ mạnh đến mức nào. Vì vậy, giải pháp tốt nhất là mô phỏng luồng người dùng bằng các thử nghiệm tổng hợp.

Băng ghế Apache

Có lẽ là một trong những thử nghiệm phổ biến và dễ sử dụng nhất để kiểm tra tải trên một trang web. Tiện ích này phù hợp cho cả thử nghiệm đơn giản và nâng cao:

Ab -c 50 -n 10000 -f TLS1.2 -H "Chấp nhận mã hóa: gzip,deflate" https://somesite.com/

# Kiểm tra số lượng request tối đa bằng TLS

Nhóm đã thực hiện 10.000 yêu cầu trong 50 luồng và, trong số những thứ khác, đã hiển thị tốc độ và số lượng yêu cầu được xử lý:

Tổng số được chuyển: 59560000 byte HTML được chuyển: 52160000 byte Số yêu cầu mỗi giây: 816,77 [#/giây] (trung bình) Thời gian mỗi yêu cầu: 122,434 (trung bình) Thời gian mỗi yêu cầu: 2,449 (trung bình, trên tất cả các yêu cầu đồng thời) Tốc độ truyền: 2375,33 đã nhận

# Nhật ký kiểm tra cung cấp nhiều thông tin hơn

Từ báo cáo này, dữ liệu quan trọng nhất sẽ là:

  • Yêu cầu mỗi giây- số lượng yêu cầu mỗi giây. Ví dụ: nếu một trang bao gồm 20 phần (CSS, hình ảnh và HTML), thì trong ví dụ của chúng tôi, máy chủ có khả năng xử lý khoảng 40 người dùng đồng thời mỗi giây.
  • Thời gian cho mỗi yêu cầu (trung bình)- thời gian trung bình để thực hiện một nhóm yêu cầu song song (trong trường hợp của chúng tôi là 50);
  • Thời gian cho mỗi yêu cầu (trung bình trên tất cả các yêu cầu đồng thời)- thời gian trung bình để hoàn thành một yêu cầu.

AB rất hữu ích trong việc đánh giá nhanh chóng và đại khái hiệu suất của máy chủ web, vì vậy nếu bạn cần lấy dữ liệu gần hơn với thực tế, bạn sẽ phải sử dụng các tiện ích bổ sung.

Httperf

Điểm chuẩn nguồn mở này được HP phát triển để đo hiệu suất của máy chủ web. Công cụ này đã không được cập nhật trong vài năm nhưng vẫn rất phù hợp.

Tiện ích này, như ab, rất dễ sử dụng và có khá nhiều chức năng. Nó được khởi chạy đơn giản như ab:

Httperf --hog --server 192.168.122.10 --wsess=100000,5,2 --rate 1000 --timeout 5

# Tạo 100.000 phiên (5 cuộc gọi cứ sau 2 giây) với tốc độ 1000

Và nhật ký sẽ trông như thế này:

Tổng cộng: kết nối 117557 yêu cầu 219121 phản hồi 116697 thời gian kiểm tra 111,423 giây Tốc độ kết nối: 1055,0 kết nối/giây (0,9 ms/kết nối,<=1022 concurrent connections) Connection time : min 0.3 avg 865.9 max 7912.5 median 459.5 stddev 993.1 Connection time : connect 31.1 Connection length : 1.000 Request rate: 1966.6 req/s (0.5 ms/req) Request size [B]: 91.0 Reply rate : min 59.4 avg 1060.3 max 1639.7 stddev 475.2 (22 samples) Reply time : response 56.3 transfer 0.0 Reply size [B]: header 267.0 content 18.0 footer 0.0 (total 285.0) Reply status: 1xx=0 2xx=116697 3xx=0 4xx=0 5xx=0 CPU time [s]: user 9.68 system 101.72 (user 8.7% system 91.3% total 100.0%) Net I/O: 467.5 KB/s (3.8*10^6 bps)

# Trong số những thứ khác, hiệu suất được thể hiện bằng tỷ lệ Yêu cầu

Báo cáo này nên tập trung vào:

  • Tốc độ kết nối- tốc độ thực sự của việc tạo kết nối mới. Nó cho thấy khả năng xử lý kết nối của máy chủ, tức là, trong trường hợp của chúng tôi, lên tới 1055 kết nối/giây, nhưng không quá 1022 kết nối đồng thời.
  • thời gian kết nối- thời gian tồn tại của các kết nối thành công giữa khởi tạo và đóng. Một lần nữa, nó hiển thị hiệu suất của máy chủ khi xử lý một số lượng lớn kết nối.
  • Tỷ lệ yêu cầu- tốc độ xử lý yêu cầu. Nghĩa là, số lượng yêu cầu mà máy chủ có khả năng thực hiện mỗi giây cho thấy khả năng phản hồi của ứng dụng web.

Nhưng để kiểm tra sâu hơn và tải trọng đáng kể, bạn sẽ phải sử dụng các công cụ tiên tiến hơn nữa.

Tông

Nó là một tiện ích mạnh mẽ, tiên tiến, đa tác vụ và đa luồng. Công cụ này có thể được sử dụng để tải các máy chủ HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP và Jabber/XMPP. Hỗ trợ SSL, giám sát tài nguyên hệ thống và các tác nhân SNMP, Munin hoặc Erlang trên máy chủ từ xa, mô phỏng hành vi người dùng và báo cáo nâng cao.

Công cụ này được viết bằng Erlang, vì vậy trước tiên bạn cần cài đặt các kho lưu trữ cần thiết, sau đó tải xuống và cài đặt Tsung:

Wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz tar zxfv tsung-1.6.0.tar.gz cd tsung-1.6.0 ./configure && make && make install

# Giải nén và biên dịch tiện ích

Tất cả các cài đặt công cụ phải được chỉ định trong tệp cấu hình của nó:

Cp /usr/share/doc/tsung/examples/http_simple.xml /root/.tsung/tsung.xml

# Copy file cấu hình vào thư mục Tsung

Sau đó, bạn cần chỉnh sửa nó bằng cách thiết lập các tham số cần thiết:

# Bạn có thể chỉ định các tùy chọn bổ sung (ví dụ: trình duyệt người dùng), nhiều nút để mô phỏng người dùng

Bây giờ bạn có thể chạy tsung:

Tsung -f tsung.xml start Bắt đầu Tsung "Thư mục nhật ký là: /root/.tsung/log/20160428-1117"

# Để chạy từ nhiều nút, trước tiên chúng phải được chỉ định trong cài đặt

Khi tiện ích đã hoàn thành công việc, bạn có thể xem báo cáo:

Mkdir report_output cd report_output /usr/lib/tsung/bin/tsung_stats.pl --stats /root/.tsung/log/20160428-1117/tsung.log crom graph.html

# Chỉ định trình duyệt ưa thích

Báo cáo sẽ bao gồm các biểu đồ và thông tin bổ sung quan trọng. Điều đáng chú ý là:

  • Phiên họp- tổng số người dùng và số phiên đồng thời mỗi giây mà máy chủ web đã xử lý.
  • Lời yêu cầu- thời gian phản hồi của máy chủ web, khả năng và tốc độ xử lý các yêu cầu đồng thời. Ví dụ: 200 yêu cầu/giây có nghĩa là trung bình 10 người dùng có thể truy cập đồng thời một trang web bao gồm tổng cộng 20 thành phần (CSS, hình ảnh và HTML). Và con số này là hơn 400.000 lượt truy cập trong 12 giờ.
  • Kết nối- thời gian cần thiết để kết nối, tức là khả năng phản hồi của máy chủ web.

Các biểu đồ bổ sung sẽ cho phép bạn đánh giá tải trên máy chủ web trong toàn bộ thời gian thử nghiệm, theo dõi lỗi và động lực.

Tiện ích khác

Tất nhiên, danh sách các công cụ để kiểm tra hiệu suất máy chủ web và kiểm tra tải trang không chỉ giới hạn ở những công cụ được đưa ra trong tài liệu này. Có một số lượng lớn các tiện ích như vậy, cả trả phí và miễn phí. Có các trang web để tạo tải, chẳng hạn như LoadImpact, các tiện ích để chạy từ dòng lệnh và các chương trình chính thức có GUI. Nhân tiện, một trong những giao diện người dùng phổ biến nhất là Apache JMeter - mạnh mẽ, tiên tiến và khá phức tạp.

Điều quan trọng nhất

Apache Bench, Httperf và Tsung rất phù hợp để kiểm tra tải trên các trang web lớn và nhỏ. Nhưng chỉ Tsung mới có thể khai thác hết sức mạnh của một máy chủ web và cho thấy khả năng của nó trong điều kiện gần với thực tế. Đừng quên rằng trước tiên tất cả các thử nghiệm cần phải được chạy trên một người dùng để theo dõi sự phụ thuộc và có điểm tham chiếu.

Có thể ai đó sẽ quan tâm đến cách tiến hành kiểm tra tải ứng dụng web của họ một cách “nhanh chóng”.
Chi tiết dưới vết cắt

Thay vì lời nói đầu

Tại buổi đứng lên hôm nay, Marek (một lập trình viên đến từ Ba Lan tham gia dự án EmForge) nói rằng anh ấy đã nói chuyện với một số người bạn, những người trước đây có nhiều kinh nghiệm làm việc với Liferay (mà chúng tôi tích cực sử dụng) - và trải nghiệm đó hóa ra rất tiêu cực, trước hết là do vấn đề tốc độ. Một số dự án đã bị đóng cửa một cách ngu ngốc do không thể giải quyết được những vấn đề này.

Không - tất nhiên là chúng tôi sẽ tiến hành kiểm tra tải, nhưng không phải bây giờ, một lát sau, khi sẽ có nhiều chức năng hơn và sau đó hoàn toàn là để đảm bảo rằng mọi thứ đều ổn hoặc "không ổn" ở một số nơi nhất định - và để sửa chúng.
Nhưng ở đây câu hỏi đặt ra: nếu mọi thứ quá tệ thì phải đưa ra một số quyết định ngay bây giờ - trước khi quá muộn. Chỉ có một kết luận - kiểm tra tải nhận được mức độ ưu tiên cao hơn so với các nhiệm vụ khác

Không “nhanh chóng”

Ban đầu, nó được lên kế hoạch đi theo lộ trình tiêu chuẩn - sử dụng JMeter, viết một tập lệnh đơn giản để thu thập dữ liệu các trang chính với chức năng chính bởi một người dùng ẩn danh - sau đó cải thiện nó từng chút một, đồng thời giải quyết các vấn đề về cách chạy nó một cách thành thạo thứ trên một số máy khách.

Nói chung, nhiệm vụ không phải trong một giờ

Làm thế nào về một cách nhanh chóng?

Nhưng sau đó tôi nhớ rằng có một bài viết trên Habr (tiếc là tôi không tìm thấy bài viết đó - lẽ ra tôi đã đăng liên kết), trong đó một người phàn nàn rằng mọi người không chạy thử nghiệm tải trên trang web của họ, họ gửi liên kết đến Habr, và sau đó, khi họ cần lướt qua phần “kem” "Thật khó để đưa trang web lên từ Habraeffect (và người dùng không thấy gì ngoài thông báo lỗi).
Vì vậy, ai đó ở đó đã đề xuất một số dịch vụ tiến hành thử nghiệm tải như vậy.

Nhìn chung, liên kết hữu ích nhất về chủ đề kiểm tra tải hóa ra lại là liên kết này - cả hai tiện ích như JMeter và dịch vụ tổ chức kiểm tra đều được liệt kê ở đây. Tôi sẽ tập trung vào ba điều đầu tiên chi tiết hơn một chút.

Rất nhanh?

Nói một cách ngắn gọn thì đây là Load Impact - không cần đăng ký - vào - cung cấp URL - và trong vòng 10-15 phút, 50 người dùng ảo sẽ khủng bố trang của bạn. Ngốc nghếch, đơn giản - nhưng ít nhất nó sẽ cho phép bạn thấy rằng ở lần chạy đầu tiên, ứng dụng của bạn sẽ không gặp sự cố. Chưa đi ngủ à? Hãy tiếp tục

Tải thử nghiệm trong 1,5 giờ

Tôi thực sự thích LoadStorm. Làm việc với nó được cấu trúc như sau:
1. đăng ký
2. Tạo một bài kiểm tra - cho biết trang web mà chúng tôi sẽ tra tấn
3. Trước khi bắt đầu tra tấn, cần phải xác minh (nếu bạn muốn cài đặt trang web của đối thủ cạnh tranh thì sao????). bạn cần đặt một văn bản nhất định có mã trên trang chính - hoặc một tệp có tên nhất định trong thư mục gốc
4. Tiếp theo, chúng tôi tạo một kịch bản - khi tạo một kịch bản, chúng tôi mô tả cách người dùng điều hướng trang web của bạn, những liên kết mà họ nhấp vào, bạn có thể gửi biểu mẫu. Mọi thứ khá trực quan và rõ ràng
5. sau đó chúng tôi nói khi nào sẽ khởi chạy
6. Vào thời điểm đã chỉ định, quá trình kiểm tra bắt đầu, hãy đợi 30 phút cho đến khi có tối đa 50 người dùng dạo quanh trang web của bạn theo hướng dẫn của bạn - và chúng tôi nhận được báo cáo.

Đúng, 50 người dùng đồng thời không hoàn toàn nghiêm túc - nó thậm chí còn không gần bằng hiệu ứng habro - nhưng đó là một điều gì đó. Nếu bạn cần nhiều hơn thì có gói đăng ký trả phí (vâng, tôi quên nói rằng tất cả đều miễn phí). Trong trường hợp của tôi, 50 người dùng đồng thời là một tải trọng mà tôi thậm chí không thể mơ tới trong vài tháng tới - đối với tôi như vậy là đủ.

Nói chung, mất khoảng một tiếng rưỡi để mô tả kịch bản 15 trang liên tiếp, đợi chạy thử và chờ kết quả, kết quả là tôi nhận được biểu đồ như

Biểu đồ này cho thấy hệ thống đã bị hành hạ như thế nào - trong trường hợp của tôi có tối đa 47 người dùng - và hơn 3 yêu cầu mỗi giây
Ờ, thú vị nhất


Từ đó, nếu chúng tôi loại trừ mức cao nhất tối đa là 5 giây (tại thời điểm này Garbage Collector đã quyết định bật) - nếu không thì ứng dụng hoạt động tốt - và bất kể số lượng người dùng - tức là tải 50 người dùng không tải trang web - cũng có hàng tốt.

Rõ ràng là việc thử nghiệm như vậy không hoàn toàn "nghiêm túc" về kết quả tạo ra và 50 người dùng đồng thời không thể được gọi là tải trọng nghiêm trọng, nhưng xét đến thời gian sử dụng (một tiếng rưỡi) và số tiền (0 rúp), kết quả là khá đầy đủ. Ít nhất chúng tôi tin rằng nếu có bất kỳ vấn đề nào về hiệu suất, chúng tôi vẫn sẽ không thấy nó trong những tháng tới

Dài hơn một chút và đắt hơn

Nếu bạn muốn thứ gì đó nghiêm túc hơn một chút, bạn có thể thử nó