Vinova tuyển lập trình viên Mobile & Web ở Hà Nội, lương $300-1000

Article: Dùng Tsung để Benchmark 1575

ngocdaothanh.myopenid.com 175
Updated over 2 years ago

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

Comments

tnd.myopenid.com 17
over 3 years ago

Phần sessions của tệp cấu hình có thể dùng

tsung recorder

rồi cấu hình cái trình duyệt web cho nó dùng http proxy localhost cổng 8090. Sau đó dùng duyệt web bình thường, tsung recorder sẽ ghi lại cả quá trình dùng trình duyệt.

Khi đã hoàn tất thì dùng lệnh

tsung stop_recorder

để ngưng recorder lại. 

You must login to be able to comment

Uploaded files

No file uploaded yet

You must login to be able to upload

Nhà tài trợ:

Mọi người đều tự do viết bài, sửa bài của người khác, và bình luận ở trang web này. Bạn muốn chủ động tạo bài mới để chia sẻ kinh nghiệm với mọi người? Xin click link ở dưới.

Create new content