Dùng Tsung để Benchmark
bench
2
Erlang
14
White

Ngoc Dao viết ngày 21/03/2016

Trước khi tung ra thị trường, để chuẩn bị cho quảng cáo hoặc kiểm nghiệm sản phẩm người ta thường benchmark. Để benchmark sản phẩm liên quan đến trao đổi dữ liệu qua mạng như web, DB, LDAP server người ta thường giả lập tình huống có cùng lúc hàng ngàn, hàng chục ngàn, hàng trăm ngàn v.v. kết nối cùng lúc đến server rồi đo xem nó chịu nổi bao nhiêu, tốc độ kết nối, tốc độ trả lời ra sao v.v.

Mấu chốt nằm ở chỗ làm sao cùng lúc tạo ra cùng lúc rất nhiều kết nối. Có nhiều công cụ để benchmark, ví dụ web thì ab (Apache Benchmark) hay được dùng, tuy nhiên hầu hết chúng chỉ tạo được vài trăm đến khoảng vài ngàn kết nối. Bài viết này giới thiệu Tsung, công cụ viết bằng Erlang cho phép dễ dàng tạo khoảng rất nhiều, có thể lên đến hàng vạn kết nối trên mỗi máy nó chạy. Hơn thế nó có tính năng cho phép chạy song song Tsung trên nhiều máy, lúc này tổng số kết nối chỉ còn phụ thuộc số lượng máy bạn có.

Tsung hỗ trợ sẵn nhiều giao thức như HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, Jabber/XMPP. Ngoài ra, có thể tự viết plugin cho giao thức do mình tự định nghĩa.

Sau khi cài Tsung, ta thử dùng nó để benchmark trang X-cafe (nếu không truy cập được trang này, hãy tham khảo phần dưới để benchmark trang khác, ví dụ Nhan Dan). Tài liệu Tsung gợi ý là nếu chỉ truy cập 1 URL thì nên dùng ab cho nhanh chứ dùng Tsung làm gì cho mệt, do đó ta sẽ truy cập vài URL khác nhau của trang X-cafe cùng lúc.

Qui Trình

  1. Sửa cấu hình của hệ điều hành để tăng số lượng tập tin một người dùng có thể mở. Ví dụ trong Ubuntu, sửa /etc/security/limits.conf:
    *    soft    nofile    1000000
    * hard nofile 1000000
  2. Nếu server viết bằng Erlang, dùng thêm tham số +P <số lượng process> khi khởi động. Ví dụ: erl +K true +P 1000000
  3. Tạo tập tin XML cấu hình cho Tsung để nó biết phải thực hiện benchmark thế nào.
  4. Chạy lệnh tsung -f <tên tập tin XML> để tạo ra thư mục .tsung/log/<ngày giờ benchmark> chứa kết quả thô. Tùy thời gian benchmark mà lệnh này có thể chạy trong vài phút, vài chục phút, vài tiếng v.v.
  5. Để kiểm tra trạng thái của lệnh ở (3), có thể mở thêm cửa sổ console, rồi chạy lệnh tsung status status
    $ tsung status
    Tsung recorder not started
    Tsung is running [OK]
    Current request rate: 123.4 req/sec
    Current users: 567
    Current connected users: 89
    Current phase: 1
  6. Sau khi lệnh ở (3) kết thúc, chuyển vào thư mục chứa kết quả benchmark rồi chạy lệnh tsung_stats.pl để tạo ra báo cáo trực quan dễ hiểu hơn từ kết quả thô.

Để benchmark phức tạp hơn, cần đọc tài liệu ghi ở phần tham khảo ở dưới.

Tạo Tập Tin XML

Sau khi cài Tsung, xem thư mục chứa ví dụ rồi bắt chước để tạo tập tin XML mình cần. Ví dụ để benchmark trang X-cafe ta tạo tập tin x-cafe.xml:

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/opt/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
<clients>
<client host="localhost" use_controller_vm="true" maxusers="1000000"/>
</clients>

<servers>
<server host="www.x-cafevn.org" port="80" type="tcp"></server>
</servers>

<load>
<arrivalphase phase="1" duration="1" unit="minute">
<users interarrival="0.2" unit="second"></users>
</arrivalphase>
</load>

<options>
<option type="ts_http" name="user_agent">
<user_agent probability="80">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent>
<user_agent probability="20">Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</user_agent>
</option>
</options>

<sessions>
<session name="http-example" probability="100" type="ts_http">
<request><http url="/" method="GET" version="1.1"></http></request>
<thinktime value="20" random="true"></thinktime>
<request><http url="/node/1361" method="GET" version="1.1" ></http></request>
</session>
</sessions>
</tsung>

Giải thích:

  • Trong vòng 1 phút, cứ mỗi giây lại tạo ra 5 người dùng (tổng cộng 300).
  • Giả vờ là các kết nối tạo ra bởi trình duyệt GNOME trên Linux (80%) và FireFox trên Windows (20%).
  • Mỗi người dùng lần lượt truy cập URL http://www.x-cafevn.org/http://www.x-cafevn.org/node/1361. Giữa 2 lần, đợi theo phân phối mũ với giá trị kì vọng là 20 giây (rất giống thực tế).

Chạy lệnh tsung -f x-cafe.xml, benchmark sẽ chạy mất hơn 1 phút. Đường dẫn đến thư mục chứa kết quả thô sẽ hiện trên màn hình.

Tạo Báo Cáo

Chuyển vào thư mục chứa kết quả thô. Vì shebang của tsung_stats.pl có thể không khớp, ví dụ: #!/usr/bin/perl -w, do đó cần chạy lệnh perl <đường dẫn đến tập tin tsung_stats.pl>, ví dụ: perl /opt/local/lib/tsung/bin/tsung_stats.pl.

Kết quả thu được là các tập tin ảnh tạo bằng gnuplot và tập tin report.html. Mở report.html bằng trình duyệt sẽ xem được kết quả một cách trực quan.

Khi chạy tsung_stats.pl, nếu bị lỗi "Error while running gnuplot" thì cần cài thêm chương trình gnuplot, lỗi "Can't locate Template.pm in @INC" thì cần cài thêm thư viện template cho Perl. Ví dụ trên Ubuntu thì cần cài thêm gói gnuplot và libtemplate-perl.

Tham Khảo

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Ngoc Dao

102 bài viết.
300 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
66 8
Làm thế nào để nâng cấp trang web mà không làm gián đoạn dịch vụ? Đây là câu hỏi phỏng vấn các công ty lớn thường hỏi khi bạn xin vào vị trí làm lậ...
Ngoc Dao viết hơn 2 năm trước
66 8
White
42 1
Bài viết này giải thích sự khác khác nhau giữa hai ngành khoa học máy tính (computer science) và kĩ thuật phần mềm (software engineering), hi vọng ...
Ngoc Dao viết hơn 2 năm trước
42 1
White
38 2
Nếu là team leader, giám đốc công ty hay tướng chỉ huy quân đội, vấn đề cơ bản bạn gặp phải là “hướng mọi người đi theo con đường bạn chỉ ra”. Thử...
Ngoc Dao viết hơn 2 năm trước
38 2
Bài viết liên quan
Male avatar
6 2
Apache Bench ➜ ab t 5 c 20 https://www.google.com/ This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www....
tuhoanggggg viết 3 năm trước
6 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
102 bài viết.
300 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!