Thứ hai, 25/11/2013 | 00:00 GMT+7

Cách sử dụng ApacheBench để thực hiện kiểm tra tải trên VPS Ubuntu 13.10

Kiểm tra tải là một ý tưởng hay trước khi triển khai. Thật tuyệt khi nhanh chóng cài đặt một tình huống tốt nhất cho một dự án trước khi chạy các thử nghiệm chi tiết hơn.


Công cụ ApacheBench (ab) có thể tải các server thử nghiệm bằng cách gửi một số lượng tùy ý các yêu cầu đồng thời. Mặc dù ab được thiết kế để thử nghiệm cài đặt Apache, nó được dùng để đánh giá chuẩn cho bất kỳ server HTTP nào.

Trong hướng dẫn này, ta sẽ xem cách một trình thông dịch Ruby với các server khác nhau hoạt động dưới tải. Các bước hướng dẫn giả sử một hình ảnh Ubuntu 13.10 x32 mới. Kết quả thu được từ một server 512 MB.

Cài đặt


Làm mới database gói.

apt-get update 

Cài đặt gói apache2-utils để có quyền truy cập vào ApacheBench.

apt-get install apache2-utils 

User quyền có giới hạn


Tiếp theo, tạo user sẽ quản lý Ruby. Bạn không nên chạy một số lệnh trong phần tiếp theo dưới dạng root.

useradd -m -d /home/test -s /bin/bash -g sudo test 

Lệnh này thực hiện được những gì:

  • useradd - tạo user mới

  • -m - tạo folder chính

  • -d / home / test - đặt folder chính của user thành / home / test

  • -s / bin / bash - đặt bash shell mặc định của user (Ubuntu sử dụng dấu gạch ngang theo mặc định)

  • -g sudo - thêm user vào group sudo (để chạy các lệnh với sudo)

  • kiểm tra - tên của user mới

Đặt password cho user mới.

passwd test 

Chuyển sang user mới.

su test 

RVM


Trình quản lý Phiên bản Ruby giúp dễ dàng làm việc với các môi trường Ruby khác nhau. Nó xử lý quá trình cài đặt các version Ruby cụ thể và cách ly các tập đá quý. Nó hiện được cài đặt bằng cách chạy một tập lệnh bash từ trang web của họ.

\curl -L https://get.rvm.io | bash -s stable 

Để sử dụng lệnh rvm, trước tiên bạn cần chạy tập lệnh rvm.

source ~/.rvm/scripts/rvm 

Nếu bạn muốn, bạn có thể đặt nó vào .bashrc của bạn để rvm có sẵn bất kỳ lúc nào bạn đăng nhập với quyền user .

echo "source ~/.rvm/scripts/rvm" >> ~./bashrc 

Bạn có thể xác minh tập lệnh rvm đang được sử dụng bằng cách kiểm tra phần đầu của loại. Nó phải là một hàm và không phải băm.

type rvm | head -1  rvm is a function 

Tiếp theo, cài đặt Ruby 2.0.0. RVM sẽ yêu cầu password của user vì nó cần cài đặt một loạt các phụ thuộc trước khi có thể tạo Ruby. Vì RVM xây dựng Ruby từ nguồn, nên bước này có thể mất một lúc.

rvm install 2.0.0 

Chuyển sang Ruby mới. Điều này có thể xảy ra theo mặc định sau khi cài đặt, nhưng việc kiểm tra không ảnh hưởng gì.

rvm use 2.0.0 

Thử nghiệm


Bây giờ Ruby đã được cài đặt, bạn có thể tạo một trang web đơn giản và xem nó có thể xử lý bao nhiêu yêu cầu.

Cài đặt Sinatra. Đó là một microframework / DSL để tạo các ứng dụng web Ruby. Các cờ –no- * bỏ qua tài liệu.

gem install sinatra --no-rdoc --no-ri 

Tạo ứng dụng sinatra mẫu chỉ vang lên “xin chào thế giới”.

cd ~ vim app.rb  # app.rb require 'sinatra'  get '/' do   'hello world' end 

Chạy server .

ruby app.rb 

Cuối cùng thì server cũng được khởi động, bạn có thể bắt đầu kiểm tra tải. Một lệnh gọi tới ab trông như thế này:

ab -n <num_requests> -c <concurrency> <addr>:<port><path> 

Mở một terminal khác và ssh vào server . Chạy thử nghiệm với ApacheBench. Tôi đã sử dụng 1000 yêu cầu với đồng thời là 100. Đừng quên dấu '/' cuối cùng cho đường dẫn.

ab -n 1000 -c 100 http://localhost:4567/  Server Software:        WEBrick/1.3.1 Server Hostname:        localhost Server Port:            4567  Document Path:          / Document Length:        11 bytes  Concurrency Level:      100 Time taken for tests:   3.410 seconds Complete requests:      1000 Failed requests:        0 Write errors:           0 Total transferred:      288000 bytes HTML transferred:       11000 bytes Requests per second:    293.23 [#/sec] (mean) Time per request:       341.034 [ms] (mean) Time per request:       3.410 [ms] (mean, across all concurrent requests) Transfer rate:          82.47 [Kbytes/sec] received  Connection Times (ms)               min  mean[+/-sd] median   max Connect:        0    1   2.0      0      11 Processing:   185  332  90.3    311     578 Waiting:       28  280  83.2    267     574 Total:        193  333  89.7    311     578  Percentage of the requests served within a certain time (ms)   50%    311   66%    357   75%    423   80%    446   90%    467   95%    480   98%    490   99%    501 100%    578 (longest request) 

Kết quả của tôi hội tụ khoảng 300 yêu cầu / giây. WEBrick không được biết đến với tốc độ. Tiếp tục và ngắt server bằng Ctrl-c.

Cài đặt mỏng


Thin là một web server ruby phổ biến sử dụng Mongrel để phân tích cú pháp và EventMachine cho IO không chặn. Cài đặt Thin và chạy lại server . Sinatra sẽ tự động tải Thin và cho bạn biết (“… với bản backup từ Thin”).

gem install thin ruby app.rb 

Bây giờ, hãy thử kiểm tra tải . Lần này sẽ nhanh hơn một chút.

Server Software:        thin Server Hostname:        localhost Server Port:            4567  Document Path:          / Document Length:        11 bytes  Concurrency Level:      100 Time taken for tests:   1.339 seconds Complete requests:      1000 Failed requests:        0 Write errors:           0 Total transferred:      244000 bytes HTML transferred:       11000 bytes Requests per second:    747.00 [#/sec] (mean) Time per request:       133.870 [ms] (mean) Time per request:       1.339 [ms] (mean, across all concurrent requests) Transfer rate:          178.00 [Kbytes/sec] received  Connection Times (ms)               min  mean[+/-sd] median   max Connect:        0    1   1.8      0       8 Processing:    55  128  19.9    132     155 Waiting:       42  116  19.7    121     144 Total:         62  129  18.5    132     156  Percentage of the requests served within a certain time (ms)   50%    132   66%    135   75%    137   80%    139   90%    144   95%    149   98%    152   99%    155 100%    156 (longest request) 

Ít nhất trong trường hợp này, có vẻ như Thin tạo ra một server nhanh hơn đáng kể so với WEBrick với hơn 700 yêu cầu / giây (Bạn có thể thử nâng tổng số yêu cầu, nhưng nó không cao hơn đối với tôi).

Lưu ý : Tôi có thể nhận được 1000 yêu cầu / giây trên một server Arch Linux.

Kết luận


Rõ ràng, những kết quả này không phản ánh hiệu suất server thực tế. HTTP chỉ là một phần của câu đố. Một công cụ tạo khuôn mẫu và / hoặc database chậm sẽ kéo những con số này xuống đáng kể. Tuy nhiên, nó cung cấp cho bạn một con số nhanh về sân bóng để so sánh.

Các công cụ hiệu suất khác mà bạn có thể quan tâm:

<div class = “author”> Gửi bởi: <a href=osystemhttp://robertqualls.com[> Robert Qualls </a> </div>


Tags:

Các tin liên quan

Cách cài đặt control panel Ajenti trên Ubuntu 13.04
2013-11-12
Cách thiết lập và cài đặt Django CMS trên VPS Debian 7 hoặc Ubuntu 13
2013-11-12
Cách cài đặt Dropplets trên Ubuntu 13.04 NGINX VPS
2013-10-25
Cách sử dụng HAProxy để thiết lập cân bằng tải HTTP trên VPS Ubuntu
2013-09-26
Cách tạo Omega 4 Drupal Subtheme trên Ubuntu VPS
2013-09-26
Cách sử dụng tính năng trùng lặp với GPG để tự động hóa an toàn các bản backup trên Ubuntu
2013-09-19
Cách cấu hình một cụm đa node với Cassandra trên VPS Ubuntu
2013-09-11
Cách theo dõi log xác thực hệ thống trên Ubuntu
2013-09-05
Cách bắt đầu với Jekyll trên VPS Ubuntu
2013-08-28
Cách sử dụng Dig, Whois và Ping trên Ubuntu VPS để truy vấn dữ liệu DNS
2013-08-23